public static boolean isPrime(int a) { boolean flag = true; if (a < 2) {// 素?cái)?shù)不小于2 return false; } else { for (int i = 2; i <= Math.sqrt(a); i++) { if (a % i == 0) {// 若能被整除,則說明不是素?cái)?shù),返回false flag = false; break;// 跳出循環(huán) } } } return flag; }
4 回答
已采納

JustWannaHugU
TA貢獻(xiàn)452條經(jīng)驗(yàn) 獲得超796個贊
同學(xué),你不明白的地方是for (int i = 2; i <= Math.sqrt(a); i++)嗎?
這是一個素?cái)?shù)運(yùn)算定理,已經(jīng)證明出來的,可以拿來直接用
定理: 如果n不是素?cái)?shù), 則n有滿足1<d<=sqrt(n)的一個因子d.
證明: 如果n不是素?cái)?shù), 則由定義n有一個因子d滿足1<d<n.
如果d大于sqrt(n), 則n/d是滿足1<n/d<=sqrt(n)的一個因子.
它的時(shí)間復(fù)雜度O(sqrt(n)/2), 比普通的素?cái)?shù)算法速度提高O((n-sqrt(n))/2).

椰蓉罐頭
TA貢獻(xiàn)19條經(jīng)驗(yàn) 獲得超4個贊
判斷一個數(shù)是不是素?cái)?shù),繼續(xù)循環(huán)flag是true,終止循環(huán)flag等于flase
望采納哦~

摩訶迦葉
TA貢獻(xiàn)146條經(jīng)驗(yàn) 獲得超54個贊
。。。。。 這段代碼的注釋感覺已經(jīng)寫的很清除了呀。??? 就是判斷一個數(shù)是不是素?cái)?shù)。 你還想知道什么?
添加回答
舉報(bào)
0/150
提交
取消