0

我正在使用 BigInteger 类随机生成一个大素数,但我不断得到负值。怎么可能忽略所有的负回报?我应该如何使它成为一个固定的 10 号码?

public class Gen{

    public static void main(String[] args) throws IOException {
        Random rand = new SecureRandom();
        BigInteger.probablePrime(100, rand);
        System.out.println(BigInteger.probablePrime(100, rand).longValue());
    }
}
4

1 回答 1

4

您的错误是由于溢出。Java 中的 Along最多只能保存9,223,372,036,854,775,807.

如果您的程序生成的随机数大于此值,则当您尝试将其塞入long. 您可以在BigInteger#longValue()的 Javadoc 中看到这一点:

请注意,此转换可能会丢失有关 BigInteger 值的整体大小的信息,并返回带有相反符号的结果。

于 2013-05-05T08:56:26.953 回答