使用bfs的主要路径

时间:2019-02-07 06:47:36

标签: c++ breadth-first-search

我正在解决一个问题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;

            }
        }
    }
}

谁能告诉我筛子怎么了?

1 个答案:

答案 0 :(得分:0)

我认为您筛分的实施是正确的,因此您在其他任何地方都做错了事。从代码中,我看到您正在为每个测试用例调用sieve函数。这没有必要。在问题陈述中清楚地指出,输入将是4位两位数,因此在最大情况下,如果每个数字都是质数,则100000应该足以生成校验向量。 因此,只需用100000一次筛一次即可。素数是固定数。