2009년 6월 18일 목요일

최대 공약수를 구하는 프로그램

// 최대 공약수를 구하기 위한 프로그램
#include <iostream.h>
int a, b, input_a, input_b, temp_a, temp_b, gcd_num;
// 최대 공약수를 구하기 위해 int형 변수 a, b와
// 입력받을당시의 값을 유지하기 위한 input_a, input_b
// 임시 저장공간 temp_a, temp_b, 결과저장용 gcd_num 선언
int gcd(int a, int b);
// 최대 공약수를 구하기 위한 사용자 정의 함수 선언
void main()
{
 cout << "Input two numbers\n";
 cin >> input_a >> input_b;
 a = input_a, b = input_b;
 // 최대 공약수를 구할 두 숫자를 입력 받는다
 if(a<0||b<0) // 두 숫자 중 음수가 있으면 에러메시지를 출력
  cout << "Error, minus number input!\n";
 else
 {
  if (a > b) // 두 숫자중 큰 숫자를 gcd 함수 앞 인자로 가도록 설정
   gcd_num = gcd(a, b);
  else
   gcd_num = gcd(b, a);
 
  if(gcd_num == 1) // gcd_num이 1일 경우 최대공약수가 없다고 출력
  {
   cout << "No common\n";
  }
  else
  {
   cout << input_a << " and " << input_b;
   cout << "'s greatest common divisor is " << gcd_num << "\n";
  }
 }
}
int gcd(int a, int b)
{
 while (b!=0) // b가 0이 아닌 경우 루프 수행
 {
  temp_a = a, temp_b = b; // 임시 저장공간에 각 값을 저장
  a = temp_b, b = (temp_a % temp_b);
  // 결국 a = b, b = (a % b) 이다
 }
 return a; // b가 0이 되어 루프가 종료 되면 a값을 반환
}

댓글 없음:

댓글 쓰기