素数判定优化
素数判定优化
除了2,3,素数一定都在6k左右,即6k-1,6k+1.
证明:
6k与6k+3均为3的倍数,6k+2与6k+4均为2的倍数,故素数一定在6k-1,6k+1之间。
优化:
将
for (int i = 2;i <= n/i;i++) {
if (n % i == 0) ...
}
优化为
for (int i = 5;i <= n/i;i += 6) { // 5是第一个6k-1,因此i就是6k-1,i+2就是6k+1.因为只有(6k+-1)才可能是素数,只需要判断它们就行。
if (n % i == 0 || n % (i + 2) == 0) ...
}

浙公网安备 33010602011771号