为什么我的序列生成错误?

时间:2017-12-05 21:06:54

标签: java

抱歉,此代码必须删除。

1 个答案:

答案 0 :(得分:1)

如果y不是素数,那么找到最小素因子的循环不起作用:

// finds smallest prime divisor
for (int n = 0; n < Nth_prime; n++) {
    BigInteger modded = y.mod(primes.get(n));
    if (modded.equals(zero)) {
        retval = primes.get(n).intValue();
    }
}

它找到最大素数因子,因为它在找到第一个素因子时不会停止。因为1807的因子分解是13 x 139,所以它跳过13并返回139。

在指定break后放置retval

for (int n = 0; n < Nth_prime; n++) {
    BigInteger modded = y.mod(primes.get(n));
    if (modded.equals(zero)) {
        retval = primes.get(n).intValue();
        break;
    }
}

另外,我觉得很奇怪你在25,200次检查所有素数(并重新计算每次调用的所有25,200个)。您只需要通过y的平方根检查素数。