求素数之和的问题,大家帮忙看看错在哪里?
/*求3~150间的素数之和*/#include "stdio.h"
#include "math.h"
void main()
{
int i,j,z=0;
for(i=3;i<=150;i++)
for(j=2;j<i;j++)
{if(i%j!=0)
z=z+i;break;
}
printf("3~150间的素数之和为:%d",z);
}
求出的值不应该是这么大
----------------解决方案--------------------------------------------------------
for(j=2;j<i;j++)
{if(i%j!=0)
有问题
----------------解决方案--------------------------------------------------------
是呀~~可具体是错再哪了?
----------------解决方案--------------------------------------------------------
没有人知道吗?
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<math.h>
int isprime(int m)
{
int i;
for(i=2;i<=sqrt(m);i++)
if(m%i==0) return 0;
return 1;
}
void main()
{
int i,sum=0;
for(i=3;i<=150;i++)
{
if(isprime(i))
{
sum+=i;
}
}
printf("sum is %d",sum);
}
----------------解决方案--------------------------------------------------------
我现在就想知道我的那个是错在了那里??
----------------解决方案--------------------------------------------------------
#include "stdio.h"
void main()
{
int i,j,z=0;
for(i=3;i<=150;i++)
{ j=2;
while(i%j!=0)
{ j++;
if(i==j)
{
z=z+i;
break;
}
}
}
printf("3~150间的素数之和为:%d",z);
}
帮你修改的
----------------解决方案--------------------------------------------------------
if(i%j!=0)
这里你求的是 I除取余不为0的 所有数的 和 当然不对
----------------解决方案--------------------------------------------------------
嗨。。。。。。
----------------解决方案--------------------------------------------------------
#include "stdio.h"
void main()
{
int i,j,k,z=0;
printf("3~150间的素数为:\n");
for(i=3;i<=150;i++)
{ k=0;
for(j=2;j<=i;j++)
if(i%j!=0) k++;
if(i-2==k)
{
z+=i;
printf("%d ",i);
}
}
printf("\n3~150间的素数之和为:%d",z);
getch();
}
你自己对照看看哪点不一样?
----------------解决方案--------------------------------------------------------