2017-09-28 7 views
2

そうですね、私は前回のことをすべて書き直します。私はGCFとLCDの2つの数字を見つけるためのプログラムを作っています。基本の使い方:GCFとLCD

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

または2種類、差分法、残りの方法を持っているユークリッドのアルゴリズム:あるGCFを見つけるための方法があります。

すべての配列やメソッドを使用することはできません。制御構造と反復構造を使用する必要があります。

私は減算方法を行いましたが、そこには運がないので、残りの方法を試しました。

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の場合、最後の残りの値は2つの数のGCFであることを示唆しています。私はwhileまたはdo-while構造を実行することを期待していますが、私は方法を考えることはできません。私のコードは間違った方法で入力しています。

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

しかし、それは次のようになります解決した場合は(120,50)のGCFは10でなければなりません:とにかく

iR = 120 % 50 
iG = 50/20 

、LCDは、2つの数の積た場合に獲得することができます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); 
} 
関連する問題