素数判定优化

素数判定优化

除了2,3,素数一定都在6k左右,即6k-1,6k+1.

证明:

6k6k+3均为3的倍数,6k+26k+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) ...
}
posted @ 2022-08-01 16:08  Uzhia  阅读(52)  评论(0)    收藏  举报