//判斷一個數是否是素數
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;
}對于2,不是在if里面是==0,那么為什么還是返回true. 而且對于這個代碼(i*i ?<= N)是什么意思。不太理解這個代碼就求出素數了
3 回答
已采納

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

精慕門9254224
TA貢獻167條經驗 獲得超46個贊
首先素數是約數只有1和他本身的數字,所以小于2的肯定不是素數,另i*i<=n的意思是減少for循環次數,只需要判斷i小于等于n 的開方的數字中有n的約數,n 就不是素數了!最后除去n不是素數的情況,剩下的數字肯定就是素數了!
添加回答
舉報
0/150
提交
取消