1. 목적
- 최소공배수 / 최대공약수 를 C 로 구현한다.
2. 문제 (점수 : 15 점)
- 크기와 관계 없는 두개의 정수를 입력 받아 최대공약수와 최소공배수를 찾는다.
- 실행결과
최대 공약수 : 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. 참고
- 유사 문제 (다른 것)