2 qq 32650831 qq_32650831 于 2016.01.22 11:44 提问

c语言 素数求和问题 求大神看看我代码的问题

http://acm.nyist.net/JudgeOnline/problem.php?pid=22&rec=rec

我的代码是:
#include
#include
int main()
{
int N,M,sum,i,j,a[10],flag;
double s;
scanf("%d",&M);
while(M--)
{
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
sum=0;
for(i=0;i<N;i++)
{
flag=1;//为1则是素数,0则不是素数
s=sqrt(a[i]);
for(j=2;j<=s;j++)
{
if(a[i]%j==0 || a[i]==1)
{
flag=0;
break;
}
}
if(flag==1)
sum+=a[i];
}
printf("%d\n",sum);
}
return 0;
}

如果我测试的是1时,它会把1加进sum,为什么?怎么改呢

4个回答

91program
91program   Ds   Rxr 2016.01.22 11:59
已采纳

你可以对 输入为 1 的情况做特殊处理,包括 零 也注意一下。

caozhy
caozhy   Ds   Rxr 2016.01.22 13:35

if(flag==1)
->
if((flag==1 && a[i] > 1) || a[i] == 2)

John_ToStr
John_ToStr   Rxr 2016.01.25 18:11

if(flag==1)改为if((flag==1 && a[i] > 1) || a[i] == 2)

Mr_dsw
Mr_dsw   Ds   Rxr 2016.01.22 12:25

素数的定义你理解没有,指明除去1了,你判断没有呢

qq_32650831
qq_32650831 if(a[i]%j==0 || a[i]==1) 这一行有判断呢
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!