!!求指教,c语言程序疑问,“求3-n之间素数的平方根之和”,我的这个程序怎么运行不出来,哪里错了啊

#include <stdio.h>
#include <math.h>
double fun(int n)
{
int i,k=0,j;
double sum=0.0;
for(i=3;i<n;i++)
{
for(j=1;j<=i;j++)
if(i%j==0) k=k+1;
if(k<=2)
{ sum=sum+sqrt(i); printf("%d\n",i);}
}
return sum;
}
main()
{int n;
double sum;
FILE *out;
printf("Input N=");
scanf("%d",&n);
sum=fun(n);
printf("\n\nsum=%f\n\n",sum);
/******************************/
out=fopen("out.dat","w");
fprintf(out,"%f\n",fun(180));
fclose(out);
/******************************/
}

第1个回答  2013-03-02
#include <stdio.h>#include <math.h>
double fun(int n)
{
int i,k=0,j;
double sum=0.0;
for(i=3;i<n;i++)
{
k = 0; //判断素数时,把K赋为0值
for(j=1;j<=i;j++)
{
if(i%j==0)
{
k=k+1;
}
}
if(k<=2)
{
sum=sum+sqrt(i);
printf("%d\n",i);
}
}
return sum;
}

main()
{
int n;
double sum = 0; //初始化为0
FILE *out;
printf("Input N=");
scanf("%d",&n);
sum=fun(n);
printf("\n\nsum=%f\n\n",sum);
/******************************/
out=fopen("out.dat","w");
fprintf(out,"%f\n",fun(180));
fclose(out);
/******************************/
}

修改一下运行时OK的,自己再试一下本回答被网友采纳
第2个回答  2013-03-02
for(j=1;j<=i;j++)前面加一句:k=0;试试看本回答被提问者采纳
第3个回答  2013-03-02
同意niaoshiga4。
不然找到一个素数后,下一个因数k就从这个素数值开始找,当然不对

c语言,计算并输出3到n之间所有素数的平方根之和
double fun (int n ){ int m , k, i ;double s=0.0 ;for(m=3 ; m<=n ; m++){ k=sqrt(m);\/\/如果一个数不是素数 那么他一定有一个因子是小于其平方根的。比如m不是素数 设m=i*j 假设i<j 那么 i^2<=m<=j^2 得出i<sqrt(m)<j;所以只需要比到m的平方根就可...

怎样用c语言实现求3- N间所有素数的平方根之和
return n>1;} int main(){int n,i;double s=0;scanf("%d",&n);for(i=3;i<=n;i+=2)if(isprime(i))s+=sqrt(i);printf("%.3lf\\n",s);return 0;} 输出结果

C语言编程,求3到n的所有素数的平方根之和,大神看看我哪里错了
第2个for循环的作用是检测i是否能被1到i的平方根之间的整数整除,如果有1个能整除,就不是素数,所以从2开始,每一个数都需要检测,所以j每次增加1,不是增加2.第2个if条件写错了,应该是j>sqrt(i)完整fun函数代码如下,你可以参考一下。double fun(int n){int i,j;double sum=0;for(i=3...

...3到n之间所有素数的平方根之和,我写的fun函数运行起来答案就是不_百...
double fun(int n){ int i,j;double s=0;for(i=3;i<=n;i++){ for(j=2;j<=i;j++)while(i%j==0);if(i==j)s=s+sqrt(i);} return s;}

...3到n之间所有素数的平方根之和,我写的fun函数运行起来答案就是不_百...
举个例子,当i=4,j=3,4%3!=0吧,那难道4就是素数了吗?所以里面应该先设置一个变量a=1,在循环里面,如果i%j==0,那就设置a=0,break,否则继续循环,如果直到循环结束a仍然为1,那就说明是素数。纯手打,望采纳~

c语言。求3到100内的素数的平方根之和,请大神帮我看看哪里出问题了
void main(){ int t ;double sum = 0; \/\/sum应该是double型的。。。for(t=3;t<=100;t++){ if(fun(t)==1){ sum=sqrt(t)+sum;} } printf("%f\\n",sum);} 你看看这个行不行吧

c语言编程,求3到100之间所有素数的平方根之和
0; } return 1;}int main() { double sum = 0.0; int i; for (i=3;i<=100;i++) { if (isprime(i)) { sum += sqrt(i); } } printf("3-100,素数平方根之和:%f\\n", sum); return 0;} ...

C语言中“输出3到n见所有素数的平方根之和”一题
include<stdio.h> include<math.h> int main(){ int n,k,i,j;double m=0;printf("请输入n(n>3):\\n");scanf("%d",&n);for(i=3;i<=n;i++){ k=sqrt(i);for(j=2;j<=k;j++)if(i%j==0)break;if(j>=k+1)m=m+sqrt(i);} printf("m=%f",m);return 0;} ...

C语言编程,求3到100之间所有素数的平方根之和
void main(){ int k = 0;double sum = 0; \/\/sum应该是double型的。。。for(k=3;k<=100;k++){ if(fun(k)==1){ sum=sqrt(k)+sum;} } printf("%f\\n",sum);}

计算并输出3到n之间的所有素数的平方根之和
while(m<=n){ for(i=3;i<=sqrt(m);i=i+2)if(m%i==0)break;if(i>sqrt(m)&&m!=1)s+=sqrt(m);m+=2;} return s;} void main(){ int n;while(scanf("%d",&n)!=EOF){ if(n<3){ printf("请输入大于2的数\\n");continue;} printf("%lf\\n",fun(n));} } ...

相似回答
大家正在搜