gpt4 book ai didi

java - 如何将 BigInteger 与 for 循环一起使用并修改 BigIntegers?

转载 作者:行者123 更新时间:2023-11-29 04:15:29 29 4
gpt4 key购买 nike

因此,在我的计算机科学课上,我们一直在学习如何使用 Java 编码,并且我遇到了编码本身的第一个局限性。问题是 long 只允许您存储最多 64 位或接近该位的数字。所以我们已经开始用 16 位数字进行质数检测,看看计算机进行计算需要多长时间,但我希望突破这个 16 位的限制。所以我研究了 BigIntegers,坦率地说,我不知道如何使用它们。我知道您必须导入它们并使变量等于 BigInteger 值但是当我将该变量插入 for 循环时它会出现此错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The method sqrt(double) in the type Math is not applicable for the arguments (BigInteger)
The operator % is undefined for the argument type(s) BigInteger, long
at PrimeNumbers.main(PrimeNumbers.java:16)

这是我的代码:

import java.math.BigInteger;

Scanner input = new Scanner(System.in);

BigInteger number;
number = new BigInteger("48112959837082048697");

System.out.println(number);

for(long x = 2; x < Math.sqrt(number); x++) {
if(number % x == 0) {
System.out.println("not a prime");
}
}
System.out.println("Prime");

总而言之,我只想让我的 for 循环检查数字,如果有使用 BigInteger 的解决方法,那也很棒。 BigInteger 只是我发现的第一件事。至于在别处查,网上很多说明太复杂,或者我就是不明白他们在说什么。

这是我第一次提出问题,所以我不知道它是否太长和多余,如果是的话,我很抱歉,但提前感谢任何回答我问题的人。

最佳答案

要正确使用 BigInteger,您需要了解它的方法 https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigInteger.html .

所以在你的情况下。

    for (BigInteger x = new BigInteger("2"); x.pow(2).compareTo(number) < 0; x = x.add(BigInteger.ONE)) {
if (number.mod(x).compareTo(BigInteger.ZERO) == 0) {
System.out.println("not a prime dividable by" + x);
}
}

关于java - 如何将 BigInteger 与 for 循环一起使用并修改 BigIntegers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52615679/

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