在C++中,有多种方法可以用来测试一个数是否为素数。以下是一些常见的方法的比较:
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i < n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i*i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
bool isPrime(int n) {
if (n <= 1) return false;
vector<bool> isPrime(n+1, true);
isPrime[0] = isPrime[1] = false;
for (int i = 2; i*i <= n; i++) {
if (isPrime[i]) {
for (int j = i*i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
return isPrime[n];
}
根据以上的比较,可以看出厄拉托斯特尼筛法是最有效的方法,适用于筛选一定范围内的所有素数,而在单个数的素数测试中,优化的穷举法可能是更好的选择。