51、下列程序的功能是:计算500-800区间内素数的个数cnt,并按所求素数的值从大到
小的顺序,再计算其间隔加、减之各,即第1个素数-第2个素数+第3个素数-第4个素数+
第5个素数……的值sum。请编写函数countvalue()实现程序的要求,最后调用函数writ
edat()把结果cnt和sum,输出到文件out11.dat中。
部分源程序已给出。
请勿改动主函数main()和输出数据函数writedat()的内容。
#include <stdio.h>
int cnt,sum;

void countValue()
{

}

void main()
{
cnt=sum=0;

countValue();
printf("cnt=%d\n",cnt);
printf("sum=%d\n",sum);
writeDAT();
}

writeDAT()
{
FILE *fp;

fp=fopen("OUT11.DAT","w");
fprintf(fp, "%d\n%d\n",cnt,sum);
fclose(fp);
}

/* 注:本题要求从大到小的顺序进行加减运算,因此这里采用从800开始循环到500这样
就能保证出来的素数就是从大到小,内嵌的for()再加上if()是用来判断是否为素数。其
中k用来控制加减运算。*/
void countValue()
{
int i,j,k=1;
for(i=800;i>=500;i--)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i)
{cnt++;
sum+=k*i;
k=-1*k;
}
}
}

返回南开百题目录

www.163164.cn 联系QQ:3149886