(c语言)求素数和
来源:百度知道 编辑:UC知道 时间:2024/05/22 09:01:42
求2到10之间的素数和。
这是我写的程序:
#include <stdio.h>
void main()
{int x,n=10,i,s=0;
for(x=3;x<=n;x++)
{for(i=2;i<x;i++)
if(x%i==0)
break;}
s=s+x;
printf("%d\n",s);
}
思路是:一个数(x),若在1和它本身之间找到一个i,使x%i==0,则判断出这个数不是素数,并用break跳出内层循环,否则执行s=s+x。
结果却是:11.不是(3+5+7=)12
若n=11,时我的结果是12,n=12时,我的结果是=13...
请问,s=s+x的位置错在了哪呢?第二个for循环就是判断x是否为素数的,若不是的话就break跳出第二for,用第一个for进行判断下一个数;否则就是素数了,执行s=s+x.感谢您的回答!
5楼说得好像不对,若是都加进去了,不会是12.
这是我写的程序:
#include <stdio.h>
void main()
{int x,n=10,i,s=0;
for(x=3;x<=n;x++)
{for(i=2;i<x;i++)
if(x%i==0)
break;}
s=s+x;
printf("%d\n",s);
}
思路是:一个数(x),若在1和它本身之间找到一个i,使x%i==0,则判断出这个数不是素数,并用break跳出内层循环,否则执行s=s+x。
结果却是:11.不是(3+5+7=)12
若n=11,时我的结果是12,n=12时,我的结果是=13...
请问,s=s+x的位置错在了哪呢?第二个for循环就是判断x是否为素数的,若不是的话就break跳出第二for,用第一个for进行判断下一个数;否则就是素数了,执行s=s+x.感谢您的回答!
5楼说得好像不对,若是都加进去了,不会是12.
#include <stdio.h>
void main()
{
int x,n=10,i,s=0;
for(x=3;x<=n;x++)
{
for(i=2;i<x;i++)
if(x%i==0)
break;
if i == x+1
s=s+x;
}
printf("%d\n",s);
}
你s=s+x; 放的位置不对,应该这样放:
#include <stdio.h>
void main()
{
int x,n=10,i,s=0;
for(x=3;x<=n;x++)
{
for(i=2;i<x;i++)
if(x%i==0)
break;
if(i>=x)
{
printf("%d+",x);
s=s+x;
}
}
printf("\b=%d\n",s);
}
补充:
在用外层的for计算下一个的时候,要把内层for判断出来的素数累加起来啊
否则,计算到下一个的时候,前一个就丢了啊
所以,累加的那句代码,应该在外层for循环的里面,内存for循环的外面(后面)啊
3+5+7=12?
你的结果11是指第一层循环结束之后,X自然是11.结果将是从3 加到10.
因为break只能中断最里层的循环,所以最好用函数来判断是不是素数.
如果一定要这么写, 可以用标号.另外,S应该从2开始.
#include <stdio.h>
void main()
{int x,n=1