我碰到這個算法測試素性通過審判庭我完全理解這種算法請解釋審判庭如何工作的素性測試
static boolean isPrime(int N) {
if (N < 2)
return false;
for (int i = 2; i <= Math.sqrt(N); i++)
if (N % i == 0)
return false;
return true;
}
它工作得很好。但後來我發現了另一個效果很好的另一個,但我並不完全理解它背後的邏輯。
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;
}
好像i *i < N
行爲就像i <= Math.sqrt(N)
。如果是這樣,爲什麼?
'i <= sqrt(N)'<=>'i²<= N'因爲函數sqrt在其域定義上嚴格增加。 –
「如果是這樣,爲什麼?」對'i <= Math.sqrt(N)'方程的兩邊進行平方。 – user2864740
'我*我