목적
- 최대 공약수와 최소 공배수를 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인 최대값을 구하면 됩니다.
참고
- 유사 문제