gpt4 book ai didi

java - 使用 BigInteger 类的最大质因数

转载 作者:行者123 更新时间:2023-11-30 02:27:01 24 4
gpt4 key购买 nike

package Exercises;
import java.math.BigInteger;
public class LargestPrimeFactor {

public static void main(String[] args) {
BigInteger x = new BigInteger ("600851475143");
BigInteger prime = new BigInteger ("0");

for (BigInteger i = new BigInteger("2"); i.compareTo(x.divide(new BigInteger("2"))) < 1; i = i.add(new BigInteger("1")))
{
if (x.mod(i) == new BigInteger ("0"))
if (isPrime(i))
prime = i;
}
System.out.println(prime);
}

public static boolean isPrime (BigInteger number)
{
for (BigInteger i = new BigInteger("2"); i.compareTo(number.divide(new BigInteger("2"))) < 1; i = i.add(new BigInteger("1")))
{
if (number.mod(i) == new BigInteger("0"))
return false;
}
return true;
}
}

所以我试图找到 600851475143 的最大质因数,但是当我运行它时,它不显示任何内容并且它一直运行,我该如何解决这个问题?

最佳答案

这里有一个错误。if (x.mod(i) == new BigInteger("0"))假设x=2, i=2,然后是x%i=0,但这里会返回false,因为= = 将比较变量的地址而不是值。equals 是首选。

<小时/>

正如 @Zabuza 所建议的,我找到了一个关于 difference between == and equals 的资源。

关于java - 使用 BigInteger 类的最大质因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45393877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com