목적
  - 최대공약수와 공약수의 원리를 이해하고 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인 값을 출력하면 됩니다.

참고
  - 유사 문제

Posted by 카켈