!焦急等待求助中:求素数的疑问(蓝色字体部分)!
1.请编写一个函数jsValue(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。void jsvalue(int m,int k,int xx[])
{
int i,j,s=0;
for(i=m+1;k>0;i++)
{for(j=2;j<i;j++)
if(i%j==0) break; /*注:素数为只能被自己和1整除的数.如果i%j等于0,说明i不是素数,跳出本层循环*/
if(i==j)
{xx[s++]=i;k--;}
}
}
2.算500-800区间内素数的个数cnt,并按所求素数的值从大到
小的顺序,再计算其间隔加、减之各,即第1个素数-第2个素数+第3个素数-第4个素数+
第5个素数……的值sum。
void countValue()
{
int i,j,k=1;
for(i=800;i>=500;i--)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i)
{cnt++;
sum+=k*i;
k=-1*k;
}
}
}
问题:同样求出素数,为什么前者if(i%j==0) break;if(i==j)
而后者是if(i%j==0) break;if(j>=i)
[[it] 本帖最后由 cbullet 于 2008-3-25 22:00 编辑 [/it]]