c语言求素数和

求 30 以内的所有素数之和
我编的求和错误,怎么回事啊?
#include<stdio.h>
int main()
{
int i=1,j,sum=0;
while(++i<=30){
j=1;
while(++j<=i)
if(i%j==0) break;
if(j==i) sum+=i;
}
printf("素数和为:%d\n",sum);
return 0;
}

思想很好
但是在内部循环判断之类的出错了
呵呵,内部if(i%j==0) break;这句在你到达j==的判断之前i时就跳出了内部for
下面的sum增加不执行了
呵呵
#include <stdio.h>

int main(void)
{
int i = 1;
int j;
int sum = 0;

while (++i <= 30)
{
j = 1;
while (++j <= i)
{
if (i%j == 0)
{
sum += i;
break;
}
}
}

printf("Sum = %d\n",sum);

return 0;
}追问

大哥,这是求30以内的素数之和啊,你的那个结果差的更远了。再帮忙看看吧、?

追答

噢,呵呵,刚才是在不好意思

#include

int main(void)
{
int i = 1;
int j;
int sum = 0;

while (++i <= 30)
{
j = 1;
while (++j <= i)
{
if(j == i)
sum += i;
if (i%j == 0)
{
break;
}
}
}

printf("Sum = %d\n",sum);

return 0;
}

这个就好了,把j与i的比较放在跳出操作之前

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-13
我 空间里有 类似的 例子

可以 参考 一下