为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐4208626 2021-07-29 17:11:02
我需要生成两个大于 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)超出了该限制。因此,您的minmax的值为9223372036854775807并且max-min变为零。而且问题还在继续。尝试使用比BigInteger更大的类型。


查看完整回答
反对 回复 2021-08-04
  • 3 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信