2017-09-28 1 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는 것을 의미한다. 내가 while 또는 do-while 구조를 실행할 것으로 예상하고 있지만 나는 생각할 수 없다. 내 코드가 잘못된 방식으로 입력됩니다.

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

그러나 해결하는 경우 (10)를해야한다 (120,50)의 GCF는이 같은 간다 :

어쨌든
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); 
}