三级C上机的一道求素数的问题

王朝知道·作者佚名  2009-04-03
窄屏简体版  字體: |||超大  
 
分類: 教育/學業/考試
 
問題描述:

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

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航