• 2022-05-27
    阅读以下说明和C程序,填充程序中的空缺。 [说明] 埃拉托斯特尼筛法求不超过自然数N的所有素数的做法是:先把N个自然数按次序排列起来,1不是素数,也不是合数,要划去;2是素数,取出2(输出),然后将2的倍数都划去;剩下的数中最小者为3,3是素数,取出3(输出),再把3的倍数都划去;剩下的数中最小者为5,5是素数(输出),再把5的倍数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,每次从序列中取出的最小数构成的序列就是不超过N的全部质数。 下面的程序实现埃拉托斯特尼筛法求素数,其中,数组元素sieve[i](u>0)的下标i对应自然数i,sieve[i]的值为1/0分别表示i在/不在序列中,也就是将i划去(去掉)时,就将sieve[i]设置为0。 [C程序] #include <stdio.h> #define N 10000 int main() char sieve[N+1]=(0); int i=0,k; /*初始时2~N都放入sieve数组*/ for(i=2;______;i++) sieve[i]=1; for(k=2;;) /*找出剩下的数中最小者并用K表示*/ for(;k<N+1&&sieve[k]==0;______); if(______)break; print("%d\t",k); /*输出素数*/ /*从Sieve中去掉k及其倍数*/ for(i=k;i<N+1;i=______) ______; return 0; /*end of main*/[/i][/i][/i][/i]
  • sieve[i]=0或其等价形式[/i]

    内容

    • 0

      下面程序的功能是计算 S= 0!+1!+2!+…+k! ( k>=0 )。 #include "stdio.h" long fun(int n) { int i; long s=1; for(i=1; ① ;i++) s*=i; return( ② ); } int main() { int k,n; long s; scanf("%d",&n); s= ③ ; for(k=0;k<=n;k++) s+= ④ ; printf("%ld\n",s); return 0; }

    • 1

      下面( )是正确的判断素数程序(m>1)。 A: j=0;for (i =2; i<=m-1; i++) if ( m % i != 0) j++;if(j==m-2) printf(“%d是素数\n", m); B: j=0;for (i =2; i<=m-1; i++) if ( m % i == 0) j++;if(j==0) printf(“%d是素数\n", m); C: flag=0;for (i =2; i<=m-1; i++) if ( m % i == 0) flag=1;if(flag==0) printf(“%d是素数\n", m); D: for (i =2; i<=m-1; i++) if ( m % i == 0) i=m+2;if(i==m+3) printf(“%d是素数\n", m);

    • 2

      下面( )是正确的判断素数程序(m>1)。 A: j=0; for (i =2; i<=m-1; i++) if ( m % i==0) j++; if(j==0)printf(“%d是素数\n", m); B: j=0; for(i =2; i<=m-1; i++) if ( m % i != 0) j++; if(j==m-2)printf(“%d是素数\n", m); C: for (i =2; i<=m-1; i++)<br> if ( m % i==0) i=m+2; if(i==m+3)printf(“%d是素数\n", m); D: flag=0; for (i =2; i<=m-1; i++) if ( m % i==0) flag=1; if(flag==0)printf(“%d是素数\n", m);

    • 3

      定义数组char a&#91;&#93;=}'0','1','2','3');,则将该数组中元素按反序转换成整数,正确的程序段是______。 A: int k=0,i; for(i=0;i<4;i++) k=k*10+a-48; B: int k=0,i; for(i=3;i>=0;i--) k=k*10+a-'0'; C: int k=0,i; for(i=3;i>=0;i--) k=k+a-'0'; D: int k,i; for(i=3;i>=0;i--) k=k*10+a-'0';

    • 4

      请读程序: #include main() { int n&#91;2&#93;, i, j, k; for(I=0;I&lt;2;i++) n[i]=0; k=2; for(i=0;i 答案: (1) A 答案解析: 难易: 中 知识点:[/i]