2017-09-28 54 views
2

所以是的,我要重述一下我上次所說的一切。我正在製作一個用於查找兩個數字的GCF和LCD的程序。有辦法找到GCF是:使用基本知識:GCF和LCD

gcf = BigInteger.valueOf(x).gcd(BigInteger.valueOf(y)).intValue(‌​); 

或歐幾里德的算法有兩種類型,扣除法,剩餘法。

我們不允許使用任何數組或方法。我們必須使用控制結構和重複結構。

我做了減法,但我發現沒有運氣,所以我現在嘗試了其餘的方法。

int iA = 0, iB = 0, iG = 0, iL = 0, iR = 0; 
if(iA != iB){ 
    if (iA > iB){ 
     iR = iA % iB; 
     iG = iB/iR; 
     iL = (iA*iB)/iG; 
    } 
    else{ 
     iR = iB % iA; 
     iG = iA/iR; 
     iL = (iA*iB)/iG; 
    } 
    System.out.println("The GCF is: " + iG); 
    System.out.println("The LCD is: " + iL); 
} 
else{ 
    System.out.println("The GCF is: " + iA); 
    System.out.println("The LCD is: " + iA); 

現在其餘方法表明,如果剩餘== 0,則該最後一個餘數值是兩個數的GCF。我期待執行一個whiledo-while結構,但我想不出辦法。我現在的代碼現在以錯誤的方式輸入。

例如

First Number: 120 
Second Number: 50 
The GCF is: 2 

但是,(120,50)的GCF應該是10。如果解決了這個問題是這樣:

iR = 120 % 50 
iG = 50/20 

無論如何,LCD可以得到,如果這兩個數的乘積是由GCF劃分的,所以如果我沒有找到GCF,那就太忙碌了。

任何幫助將是一個非常讚賞。先謝謝你!

回答

0

當然,這是使用剩餘法的答案。

int iA = 0, iB = 0, iL = 0, iR; 
System.out.print("Enter First Number: "); 
iA = var.nextInt(); 
System.out.print("Enter Second Number: "); 
iB = var.nextInt(); 
iL = (iA*iB); 
if(iA != iB){ 
    if (iA > iB){ 
     do{ 
      iR = iA % iB; 
      iA = iB; 
      iB = iR; 
     }while(iR != 0); 
    iL /= iA; 
    System.out.println("The GCF is: " + iA); 
    } 
    else if (iB > iA){ 
     do{ 
      iR = iB % iA; 
      iB = iA; 
      iA = iR; 
     }while(iR != 0); 
    iL /= iB; 
    System.out.println("The GCF is: " + iB); 
    } 
    System.out.println("The LCD is: " + iL); 
} 
else{ 
    System.out.println("The GCF is: " + iA); 
    System.out.println("The LCD is: " + iA); 
}