下列程序的功能是:计算500~800之间素数的个数cnt,并按所求素数的值从小到大的顺序,再计算其间隔
下列程序的功能是:计算500~800之间素数的个数cnt,并按所求素数的值从小到大的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum输出到文件OUT66.DAT中。
注意:部分源程序已给出。
请勿改动主函数mam()和写函数writeDAT()的内容。
试题程序:
include<stdio. h>
int cnt, sum;
void countValue ( )
{
}
void main ()
{
cnt= sum=0;
countValue();
printf ("素数的个数=%dkn", cnt );
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; i800; i++) { half=i/2; for (j=2; 3=half; j++) if (i%j==0) break; /*如果该数不是素数,则退出此层循环*/ if (j>=half) /*如果该数是素数,则将该数存入数组yy中*/ { yy [cnt]=i; ont ++; /*统计素数的个数*/ } } for(i=0,j=-1;icnt;i++) /*计算这些素数的间隔加、减之和*/ { j=i*-1; sum+=j*yy[i]; } } 解析:本题考查的知识点如下:
(1)利用循环和“%”进行素数的判断。
(2)间隔加、减的实现。
在本题中,首先要找出判断素数的方法。若一个数a依次除以从2到a/2的数所得的余数都不是0,则这个数是素数。用此方法依次判断出从500到800区间内的素数。由题意可知,第1,3,5…个素数计算加法,第2,4,6…个素数计算减法。减去1个正整数就是加上负的这个正整数,所以可以将这个正整数乘以-1进行加法。使用循环实现求和,在奇数次的循环中,每个素数乘以1,偶数次的循环中,素数乘以-1,就可实现间隔加、减。
还是lingo问题road(country,country):length,xie,c;endse 英语 2020-05-13 …
计算下列行列式:a1 a2 a3...an b2 1 0 ...0 b3 0 1 ...0 .bn 数学 2020-05-16 …
计算行列式:a b 0 ...0 0 0 a b ...0 0 ............0 0 0 数学 2020-05-16 …
matlab 矩阵内的元素判断问题我想设计一个矩阵来得知每列为0的栏位如下id A B C D E 其他 2020-05-16 …
ansys直接建立有限元模型问题finish/clear/prep7n,1,0,0,0n,2,0, 英语 2020-05-17 …
试说明下列4个IP地址:(1)131.107.256.80(2)231.222.0.11(3)12 其他 2020-06-24 …
若“*”是一个对于1和0的新运算符号,且运算规则如下:1*1=0,1*0=0,0*1=1,0*0= 数学 2020-07-26 …
0.0.0.0是否能作为目标地址?全0能不能作为目标地址?先看一下2008上半年网工上午题51以下列 其他 2020-11-23 …
1.2.16gX2O5中含有0.1mol氧原子,则X的相对原子质量为()a.21.6b.28c.14 化学 2021-01-20 …
1.2.16gX2O5中含有0.1mol氧原子,则X的相对原子质量为()a.21.6b.28c.14 化学 2021-01-20 …