簡體   English   中英

無限循環。 Java BigInteger

[英]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;

我在哪里弄錯了? 誰能說出循環為什么無限執行?

63363的倍數,因此您嘗試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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM