<최대공약수와 최소공배수>, 2609번
문제
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.
출력
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
예제 입력 1
24 18
예제 출력 1
6
72
풀이
이 문제는 두 정수를 입력받은 후 그 수의 최대공약수와 최소공배수를 출력하는 프로그램을 작성하는 것이다. 나는 유클리드 호제법을 이용해서 최대공약수(GCD)를 구한 후 최소공배수(LCM)은 입력받은 두 수를 곱하고 최대공약수로 나눠주는 방식을 이용해서 프로그램을 제작하였다.
#include <stdio.h>
int GCD(int n1, int n2)
{
int n3 = 0;
while (n2 != 0)
{
n3 = n1 % n2;
n1 = n2;
n2 = n3;
}
return n1;
}
int main(void)
{
int num1, num2;
scanf("%d %d", &num1, &num2);
printf("%d \n", GCD(num1, num2));
printf("%d \n", num1 * num2 / GCD(num1, num2));
return 0;
}