소프트웨어/C

[2005년 기말 2번] 최소공배수/ 최대공약수 - 조건 반복

카켈 2007. 2. 19. 23:22




1. 목적

  - 최소공배수 / 최대공약수 를 C 로 구현한다.

2. 문제 (점수 : 15 점)
  - 크기와 관계 없는 두개의 정수를 입력 받아 최대공약수와 최소공배수를 찾는다.
  - 실행결과

정수값 두개를 입력하세요 : 120 750
최대 공약수 : 30
최소 공배수 : 3000
Press any key to continue

3. 이해
  - 최소공배수와 최대공약수를 이해하는가?
  - 조건에 맞는 반복문을 구현할수 있는가?

4. 코드

#include <stdio.h>

int main()
{
 int a, b, start, end;
 a = b = start = end = 0;
 printf("정수값 두개를 입력하세요 : ");
 scanf("%d %d", &a, &b);

 start = a > b ? b : a;
 end = a < b ? b : a;

 a = b = 1;

 for(a = 1; a <= start; a++)
 {
  if(start % a == 0 && end % a == 0)
   b = a > b ? a : b;
 }

 printf("최대 공약수 : %d\n", b);

 a = start;
 b = 0;

 while(a <= start * end)
 {
  if(a % start == 0 && a % end == 0)
  {
   b = a;
   break;

  }

  a++;

 }

 printf("최소 공배수 : %d\n", b);

 return 0;
}

5. 해설
  - 최대공약수는 1 부터 큰수 까지 두수 모두 나머지가 0이 되는 가장큰수를 의미합니다.
  - 최소공배수는 작은수에서 시작하여 두수 모두 나머지가 0이 되는 가장 작은 수를 의미합니다.
  - 두가지 모두 for 문 / while 문으로 구현했습니다.

6. 참고
  - 유사 문제 (다른 것)