五虎将武器:三级C上机的一道求素数的问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 12:07:25
void num(int m,int k,intxx[])
{
int data=m+1;
int half,n=0,i;
while(1)
{
half=data/2;
for(i=2;i<=half;i++)
if(data%i==0)
break;
if(i>half)
{
xx[n]=data;
n++;
}
if(n>=k)
break;
data++;
}
}
请教一下if(i>half)是什么意思,为什么这步结束了就表示是素数了,不明白,谢了

如果一个正整数从2开始除,一直除到这个数的一半都无法整除,那么就说明这个数是素数。
上边的循环就是这样,当 i 大于这个数的一半时,无论这个数是否是素数,都无法整除 i ,所以 i 从2循环到half是可行的。
如果在这些数中找不到一个可以整除 i 的数,即当 i 大于half时,就说明这个数是素数了。