如何生成两个大于 10^25 的素数 p1、p2

我需要生成两个大于 10^25 的素数 p1、p2,以及它们的乘积 n。和一个小于 n 的数字“a”。


为什么我使用下面的代码,4个数字的结果都是0。


public static void main(String args[]) {


        long min = (long) Math.pow(10, 25);

        long max = Long.MAX_VALUE;

        long p1 = (long)((Math.random()+1)*(max-min));

        long p2 = (long)((Math.random()+1)*(max-min));

        long n = p1 * p2 ;

        long a = (long)((Math.random())* n) ;

        System.out.println("p1= " + p1 + ", p2= " + p2 + ", n= " + n +",a= " + a);

}

谢谢你。


慕姐4208626
浏览 169回答 3
3回答

慕盖茨4494581

您有以下问题:long可以容纳的最大值是9223372036854775807,并且您的计算Math.pow(10, 25)超出了该限制。因此,您的min和max的值为9223372036854775807并且max-min变为零。而且问题还在继续。尝试使用比BigInteger更大的类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java