[英]Infinite loop. Java BigInteger
我的Java代碼中有以下“ while”循環。 我的代碼中的所有變量都是BigIntegers。
BigInteger d=new BigInteger("1");
BigInteger e=new BigInteger("3");
BigInteger phi1=new BigInteger("6336");
while(true)
{
if(((d.multiply(e)).mod(phi1)).equals(BigInteger.ONE))
break;
d=d.add(BigInteger.ONE);
//System.out.println(d);
}
在這種情況下,循環將無限執行。 但我想在以下情況下加個休息時間:
if((d*e)%phi1==1)
break;
我已經將其轉換為BigInteger
if(((d.multiply(e)).mod(phi1)).equals(BigInteger.ONE))
break;
我在哪里弄錯了? 誰能說出循環為什么無限執行?
6336
是3
的倍數,因此您嘗試break
的條件永遠不會成立。
無限循環是不可避免的。
您將3 * d除以6336,然后檢查余數r。 令k為除法結果:
3d = k*6336 + r
=> r = 3*(d - 2112*k)
這意味着余數始終是3的倍數,因此永遠不能為1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.