목적
  - 최대 공약수와 최소 공배수를 C++ 에서 구현한다.

문제
사용자 삽입 이미지

  - 실행 결과는 위의 그림이 나오지 않습니다. 최소 공배수가 다릅니다.

사용자 삽입 이미지


코드

#include <iostream>

using namespace std;

int main(void)
{
 int iA, iB, iC, iGCM, iLCM, iMin, iMax, i;
 iA = iB = iC = iMin = iLCM = iMax = 0;
 i = iGCM = 1;

 cout << "세개의 정수 입력: ";
 cin >> iA >> iB >> iC;

 iMax = iA;
 iMax = iB > iMax ? iB : iMax;
 iMax = iC > iMax ? iC : iMax;

 iMin = iA;
 iMin = iB < iMin ? iB : iMin;
 iMin = iC < iMin ? iC : iMin;

 while(i <= iMin)
 {
  if(iA % i == 0 && iB % i == 0  && iC % i == 0)
   iGCM = iGCM < i ? i : iGCM;
  i++;

 }

 i = iMax;
 while(i <= iA * iB * iC)
 {
  if( i % iA == 0 && i % iB == 0 && i % iC == 0)
  {
   iLCM = i;
   break;
  }

  i++;
 }


 cout << "최대 공약수 : ";
 cout << iGCM << endl;
 cout << "최소 공배수 : ";
 cout << iLCM << endl;

 return 0;
}

해설
  - 최소 공배수는 최대값을 시작으로 세수로 나눈 나머지가 0인 첫번째 수를 최대 공약수는 1부터 최소값까지 나머지가 0인 최대값을 구하면 됩니다.

참고
  - 유사 문제

Posted by 카켈