软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称 2013年上半年程序员考试下午真题试题(案例分析)
考试中心《2013年上半年程序员考试下午真题试题(案例分析)》在线考试
试卷年份2013年上半年
试题题型【分析简答题】
试题内容

阅读以下说明和C程序,填充程序中的空缺,将解答填入答题纸的对应栏内。
【说明】
埃拉托斯特尼筛法求不超过自然数N的所有素数的做法是:先把N个自然数按次序排列起来,1不是素数,也不是合数,要划去; 2是素数,取出2(输出),然后将2的倍数都划去:剩下的数中最小者为3,3 是素数,取出3(输出),再把3的倍数都划去;剩下的数中最小者为5,5是素数,再把5的倍数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,每次从序列中取出的最小数所构成的序列就是不超过N的全部质数。
下面的程序实现埃拉托斯特尼筛法求素数,其中,数组元素sieve[i](i>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;         (1)      ; i++)
                sieve[i] = 1;
       
        for( k  =  2; ;){
             /*找出剩下的数中最小者并用k表示*/
             for( ; k<N+1&& sieve[k]==0;          (2)       );
             if (        (3)        )  break;
             printf("%d\t",k);       /*输出素数*/
             /*从sieve中去掉k及其倍数*/
             for( i=k; i<N+1;  i=       (4)     )
                        (5)                   ;
         }/*end of  for*/
 
          return  0;
     }  /*end  of  main*/


相关试题

推荐文章
合作网站内容