改进为循环步进2改为6
本改进来自百度百科:
bool isPrime(unsigned long n) {
if (n <= 3) {
return n > 1;
} else if (n % 2 == 0 || n % 3 == 0) {
return false;
} else {
for (unsigned short i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
}
return true;
}
}
通过步进加6,可以每次少算5之后的9,15,21,27……等数,计算量少了三分之一。