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 に答える