//判斷一個(gè)數(shù)是否是素?cái)?shù)
public?static?boolean?isPrime(int?N)?{
if?(N?<?2)?return?false;
for?(int?i?=?2;?i*i?<=N;?i++)?
if?(N?%?i?==?0)?return?false;
return?true;
}對(duì)于2,不是在if里面是==0,那么為什么還是返回true. 而且對(duì)于這個(gè)代碼(i*i ?<= N)是什么意思。不太理解這個(gè)代碼就求出素?cái)?shù)了
3 回答
已采納

qq_爬大樹(shù)_0
TA貢獻(xiàn)3條經(jīng)驗(yàn) 獲得超1個(gè)贊
//判斷一個(gè)數(shù)是否是素?cái)?shù) ????public?static?boolean?isPrime(int?N)?{ ????????if?(N?<?2)?return?false;//比二小的不是素?cái)?shù),返回false ????????for?(int?i?=?2;?i*i?<=N;?i++)?//定義一個(gè)int?i=2,如果滿足i*i<=N則執(zhí)行循環(huán),否則跳出循環(huán),每次執(zhí)行完循環(huán)執(zhí)行i++ ????????????if?(N?%?i?==?0)?return?false;//如果能整除一個(gè)非1整數(shù)則不是素?cái)?shù) ????????????return?true;?//這是循環(huán)體外,如果執(zhí)行完循環(huán)沒(méi)有沒(méi)返回false就能執(zhí)行到這,返回ture????? ????}
至于為什么只要 i*i<=N 的 i 的范圍內(nèi)就能確定不是素?cái)?shù),假設(shè)有兩個(gè)整數(shù)x,y相乘等于N,并且 i*i>N,那么可以確定x和y中至少有一個(gè)小于i,那么只要確認(rèn)小于 i 的任何整數(shù)都不能被整除,也就確認(rèn)了沒(méi)有任何一個(gè)x*y=N能夠成立,則N為素?cái)?shù)

精慕門(mén)9254224
TA貢獻(xiàn)167條經(jīng)驗(yàn) 獲得超46個(gè)贊
首先素?cái)?shù)是約數(shù)只有1和他本身的數(shù)字,所以小于2的肯定不是素?cái)?shù),另i*i<=n的意思是減少for循環(huán)次數(shù),只需要判斷i小于等于n 的開(kāi)方的數(shù)字中有n的約數(shù),n 就不是素?cái)?shù)了!最后除去n不是素?cái)?shù)的情況,剩下的數(shù)字肯定就是素?cái)?shù)了!
添加回答
舉報(bào)
0/150
提交
取消