전공/알고리즘 + 코테

[C 언어] 백준 #2609 - 최대공약수와 최소공배수 구하기

BBungyaLog 2023. 7. 11. 21:31

문제


두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.

출력

첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.

입력 출력
24 18 6
72

 

풀이


최소공배수는 두 수를 곱한 후 최대공약수로 나누면 구할 수 있다.

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int a, b;
	int i, j;

	scanf("%d %d", &a, &b);

	// 최대공약수 구하기

	if (a < b)
		i = a;
	else
		i = b;

	while (1) {
		if (a % i == 0 && b % i == 0)
			break;
		else
			i--;

		if (i == 1)
			break;
	}

	printf("%d\n", i);
	printf("%d", (a * b) / i);

	return 0;
}