下列程序的功能是:计算500~800之间素数的个数cnt,并按所求素数的值从小到大的/顷序,再计算其间隔加、减之和,即第1个素数-第2个素数十第3个素数-第4个素数+第5个素数……的值sum。请编写函数 countValue()实现程序的要求,最后调用函数

admin2010-01-09  30

问题 下列程序的功能是:计算500~800之间素数的个数cnt,并按所求素数的值从小到大的/顷序,再计算其间隔加、减之和,即第1个素数-第2个素数十第3个素数-第4个素数+第5个素数……的值sum。请编写函数 countValue()实现程序的要求,最后调用函数writeDaI()把结果cnt和sum输出到文件OUT66.DAT中。
   注意:部分源程序已给出。
   请勿改动主函数main()和写函数writeDAT()的内容。
   试题程序;
      #include<stdio. h>
     int cnt, sum;

     void countValue()
     {

     }

     void main()
     {
         cnt=sum=0;
         countValue ();
         printf ("素数的个数=%d\n", ont);
         printf ("按要求计算得值=%d\n", sum );

         writeDAT ();
     }
     writeDAT ()
     {
         FILE *fp;
         fp=fopen ( "OUT66. DAT", "w" );
         fprintf (fp, "%d\n%d\n", cnt, sum);
         fclose (fp);
     }

选项

答案void countValue() { int i,j,half,yy[100]; for(i=500;i<800;i++) { half=i/2; for(j=2;j<=half;j++); if (i%j==0) break; /*如果该数不是素数,则退出此层循环*/ if (j>=half) /*如果该数是素数,则将该数存入数组yy中*/ { yy[cnt]=i; cnt++; /*统计素数的个数*/ } } for (i=0, j =-1; i<cnt; i++) /*计算这些素数的间隔加、减之和*/ { j=j*-1; sum+=j*yy[i]; } }

解析 本题考查的知识点如下:
   (1)利用循环和“%”进行素数的判断。
   (2)间隔加、减的实现。
   在本题中,首先要找出判断素数的方法。若一个数a依次除以从2到a/2的数所得的余数都不是0,则这个数是素数。用此方法依次判断出从500到800区间内的素数。由题意可知,第1,3,5…个素数计算加法,第2,4,6…个素数计算减法。减去1个正整数就是加上负的这个正整数,所以可以将这个正整数乘以-1进行加法。使用循环实现求和,在奇数次的循环中,每个素数乘以1,偶数次的循环中,素数乘以-1,就可实现间隔加、减。
转载请注明原文地址:https://jikaoti.com/ti/uYp7FFFM
0

相关试题推荐
最新回复(0)