목적
- 최대공약수와 공약수의 원리를 이해하고 C 에 적용시킨다.
문제
코드
#include <iostream>
using namespace std;
int main(void)
{
int iA, iB, iC, iMin, iMax, i, iGCM;
iA = iB = iC = iMin = iMax = iGCM = 0;
i = 1;
cout << "세 정수값을 입력하세요 : ";
cin >> iA >> iB >> iC;
iMin = iMax = iA;
iMin = iMin > iB ? iB : iMin;
iMin = iMin > iC ? iC : iMin;
iMax = iMax < iB ? iB : iMax;
iMax = iMax < iC ? iC : iMax;
cout << "약수 : ";
while(i <= iMin)
{
if(iMin % i == 0)
cout << i << " ";
i++;
}
i = 1;
cout << endl << "최대공약수 : ";
while(i <= iMax)
{
if(iA % i == 0 && iB % i == 0 && iC % i == 0)
iGCM = iGCM < i ? i : iGCM;
i++;
}
cout << iGCM << endl;
return 0;
}
해설
- 최대 공약수는 최대값까지 공통적으로 나머지가 0인 수의 최대값을 구하면 됩니다.
- 공약수는 전부 나눠서 나머지가 0인 값을 출력하면 됩니다.
참고
- 유사 문제