问答题
1. 请编写fun()函数,其功能是:计算并输出3~m所有素数的平方根之和。
例如,若主函数从键盘给m输入50后,则输出为s=63.665791。
注意:m的值要大于2,但不大于100。部分源程序给出如下。
请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。
试题程序:
#include<math.h>
#include<stdio.h>
double fun(int m)
{
}
void main()
{
int m;
double s;
FILE *out;
printf("\n\nInput m:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
out=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
fclose(out);
}
【正确答案】int n,k,i;
double sum=0.0:
for(n=3;n<=m;n++) //判断n是否为素数
{
k=sqrt(n);//求n的平方根
for(i=2;i<=k;i++)
if(n%i==0)break;//如果n不是素数,跳出
if(i>=k+1)
sum+=sqrt(n);//求平方根的和
}
return sum;
【答案解析】 首先,判断循环中n是否为素数,如果不是素数,求其平方根的累加和,并返回计算结果,否则跳出判断循环。其中,对于平方根的求解可以使用C语句中的sqrt()函数。