我需要生成两个大于 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);}谢谢你。
3 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
您有以下问题:long可以容纳的最大值是9223372036854775807,并且您的计算Math.pow(10, 25)
超出了该限制。因此,您的min和max的值为9223372036854775807并且max-min变为零。而且问题还在继续。尝试使用比BigInteger更大的类型。
添加回答
举报
0/150
提交
取消