求100-500之间所有的素数之和

求100-500之间所有的素数之和
希望得到c语言程序。

#include"stdio.h"
void main()
{
int s=0,n,a;
for(n=100;n<=500;n++)
for(a=2;a<n;a++)
{
if(n/a==0)break;/*如果n不是素数,那么就会被从2到它本身之间的数整除,就跳出内循环*/
if(a=n) /*如果n是素数,那么内循环就不会提前结束,等到最后一次循环之后a++,a就会与n相等*/
s+=n; /*将素数全部相加,也就是求和*/
}
printf("100-500之间所有素数之和为:%d\n",s);
}
还有一种好像是(我对这个方法的数学原理不清楚,所以也不大会用)判断如果2到这个数的开平方数都不能整除这个数,那么这个数就是素数:
#include"stdio.h"
#include"math.h"
void main()
{
int s=0,n,i,k,j;
for(n=100;n<=500;n++)
{
k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n/i==0)break; /*判断依据和上面的一样,如果不是素数就提前跳出内循环了,下面的也一样*/
if(i>k)
s+=n;
}
}
printf("100-500之间所有素数之和为:%d\n",s);
}
大概就是这样,,,,你调试下吧。。。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-05-14
/*判断一个数是否素数的函数可以这样写: */

int chk(int x)
{
ok=1;
for (i=2;i<x && ok==1;i++) if (x%i==0) ok=0;
return ok;
}

/*那么主程序代码如下:*/

main()
{
int i,s=0;
for (i=100;i<=500;i++) if (chk(i)) s+=i;
printf("%d\n", s);
}
第2个回答  2009-05-14
//运行正确
#include<stdio.h>
int prime(int n) //定义函数判断素数
{
int i,flag=1;
for(i=2;i<n/2;i++)
if(n%i==0)flag=0;
if(flag==0)return 0;
else return 1;
}

void main() //主函数
{
int i,sum=0;
for(i=100;i<=500;i++)
if(prime(i)==1)sum+=i;
printf(">> sum=%d\n",sum);

}