C 自己编写的一个程序设计题目的程序 不知道错在哪儿 求帮助
3.程序设计题
请编写函数fun,其功能是:计算并输出3到m之间所有素数的平方根之和。
例如,若主函数从键盘给m输入50后,则输出为s=63.665791。
注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。
#include <math.h>
#include <stdio.h>
double fun(int m)
{
}
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);
}
我的答案
#include <math.h>
#include <stdio.h>
double fun(int m)
{
int i,j,k=0;
int a[100];
double b[100];
double s=0.0;
for(i=3;i<=m;i++)
{
for(j=2;j<=i;j++)
{
if(i%j==0)
break;
if(j>=i)
a[k++]=i;
}
}
for(i=0;i<k;i++)
b[i]=sqrt(a[i]);
for(i=0;i<k;i++)
s=s+b[i];
return s;
}
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);
}