java - BigInteger 循环无限执行

标签 java biginteger

while(true) {
    if(((d.multiply(e)).mod(phi1)).equals(BigInteger.ONE))
        break;
    d.add(BigInteger.ONE);
}

我的程序中有如下代码,也就是说

while(true) {
    if((d*e)%phil==1) 
        break;
    d++;
}

这里,e=17phil=12816d=1 最初。

但即使等待了很长时间,循环仍在执行。可能是什么错误?

最佳答案

BigInteger 是不可变的,对它的所有操作都会返回一个新实例,而不是修改当前实例。因此 d.add(BigInteger.ONE); 不会改变 d 的值。

要解决此问题,请编写:d = d.add(BigInteger.ONE);

关于java - BigInteger 循环无限执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23345474/

相关文章:

java - Maven多模块依赖问题

java - 在java 8下使用泛型类型错误,但不是java 7

java - Java 或 Scala 程序员的小玩意儿

php - PHP 5.2 和 PHP 5.3 中大整数的按位运算

Golang 溢出 int64

encoding - Go、DER 和处理大整数

java - 如何在java中计算curve1174的加倍?

java - 使用 asterisk-java 读取 dtmf

java - paintComponent 在我的绘图之上绘制其他组件

java - BigInteger#nextProbablePrime 是否至少准确到 64 位数字?