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时,就说明这个数是素数了。