下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(1+10也是在100以内)的个数cnt,以及这些I之和sum。请编制函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出

admin2009-02-24  13

问题 下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(1+10也是在100以内)的个数cnt,以及这些I之和sum。请编制函数countValue()实现程序要求,最后调用函数writeDAT()把结果cnt和sum输出到文件out64.dat中(数值1不是素数)。
   注意:部分源程序已给出。
   请勿改动主函数main()和输出数据函数writeDAT()的内容。
   试题程序:
   #include<stdio. h>
   int cnt, sum;

   int isPrime(int number)
   {   int i, tag=l;
       if (number==l)
           return 0;
       for(i=2;tag && i<=number/2;i++)
           if(number%i==0) tag=0;
       return tag;
   }

   void countValue ()
   {

   }

   void main{}
   {   cnt=sum=O;
       countValue ();
       printf ("满足条件的整数的个数=%d\n", cnt);
       printf ("满足条件的整数的个数=%d\n", sum);
       writeDAT ();
   }

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

选项

答案void countValue() { int i,count=O,xx[30]; cnt=O; sum=O; for (i=2; i<90; i++) /*找数的范围为100以内*/ if (isPrime (i)) /*如果该数为素数,则将它存入数组xx中,并统计个数*/ { xx [count] =i; count++; } for (i=O; i<count; i++) /*如果数组xx中的素数加4各加10得到的数仍为素数*/ if (isPrime (xx [i] +4) &&isPrime (xx [i]+10) ) { sum+=xx [i]; /*将满足条件的数组xx中的数求和*/ }

解析 本题考查的知识点如下:
   (1)循环结构与判断结构的嵌套使用。
   (2)判断结构中多个条件的布尔运算。
   题中要求判断在100以内,i,i+4,i+10都是素数的个数。因为i+10也必须在100以内,1不是素数,我们可以从2开始判断到89即可(90是偶数,明显不是素数)。可以先找出2到89之间素数的个数,再判断这些素数加4和加10后是否还是素数。加4是素数与加10是素数必须同时满足,所以两个条件间用“与”运算。
转载请注明原文地址:https://kaotiyun.com/show/CRYZ777K
0

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