我正在解决一个问题prime path
我正在使用bfs
解决此问题
这是我的解决方法https://ideone.com/GMOyWX
当我使用此功能检查素数时,我得到正确答案为6
bool isprime(int number) {
for (int i = 2; i < sqrt(number); i++) {
if (number % i == 0 && i != number) return false;
}
return true;
}
但是当我使用筛子时,我得到的答案是错误的5
void sieves(int n) {
isPrime[0] = false;
isPrime[1] = false;
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
for (int j = 2*i; j <= n; j+=i) {
isPrime[j] = false;
}
}
}
}
谁能告诉我筛子怎么了?
答案 0 :(得分:0)
我认为您筛分的实施是正确的,因此您在其他任何地方都做错了事。从代码中,我看到您正在为每个测试用例调用sieve函数。这没有必要。在问题陈述中清楚地指出,输入将是4位两位数,因此在最大情况下,如果每个数字都是质数,则100000应该足以生成校验向量。
因此,只需用100000
一次筛一次即可。素数是固定数。