如何在java中以String格式计算大数的模
Posted
技术标签:
【中文标题】如何在java中以String格式计算大数的模【英文标题】:How can I calculate modulo of a large number in String format in java 【发布时间】:2016-09-28 22:40:38 【问题描述】:我正在尝试在 Java 中计算字符串中的表达式
IE
99999999999999999^99999999999999999
我想以1000000007
为模来计算这个数字。
我目前试图将大数字存储为双倍,但以双倍取模给我NaN
。
有人可以帮忙吗?
【问题讨论】:
99999999999999999^99999999999999999
是一个相当大的数字。你将不得不应用数学而不是蛮力。
定义“我试过”和“没用”。
你知道99999999999999999^99999999999999999
的实际值是多少吗?你甚至无法在合理的时间内计算出这个数字。更不用说用它做任何计算了。
除非您发布,否则我们无法帮助您解决您尝试过但没有成功的方法。
@piyush121 如果你有兴趣了解 Big modulo 的数学背后,可以查看link
【参考方案1】:
你可以使用BigInteger
和modPow(BigInteger, BigInteger)
like
BigInteger m = new BigInteger("1000000007");
BigInteger a = new BigInteger("99999999999999999");
BigInteger b = new BigInteger("99999999999999999");
BigInteger answer = a.modPow(b, m);
System.out.println(answer);
给了
265859324
【讨论】:
就是这个。以上是关于如何在java中以String格式计算大数的模的主要内容,如果未能解决你的问题,请参考以下文章
如何在java(android)中以posix格式打印本地时区?
如何在 html 页面中以适当的格式显示 CPP、Java 或任何其他编程语言代码? [关闭]