亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一個求素數的方法,里面的代碼不懂望解答一下

一個求素數的方法,里面的代碼不懂望解答一下

編程人生紀 2017-07-12 21:07:12
//判斷一個數是否是素數 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為素數


查看完整回答
反對 回復 2017-07-13
?
精慕門9254224

TA貢獻167條經驗 獲得超46個贊

首先素數是約數只有1和他本身的數字,所以小于2的肯定不是素數,另i*i<=n的意思是減少for循環次數,只需要判斷i小于等于n 的開方的數字中有n的約數,n 就不是素數了!最后除去n不是素數的情況,剩下的數字肯定就是素數了!

查看完整回答
反對 回復 2017-07-12
  • 3 回答
  • 0 關注
  • 1605 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號