https://www.acmicpc.net/problem/2609

 

2609번: 최대공약수와 최소공배수

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

www.acmicpc.net

#pragma warning(disable:4996)
#include <stdio.h>
int main() {
	int n, n1, min = 0, max = 0;
	scanf("%d %d", &n, &n1);
	for (int i = 1; i <= n && i <= n1; i++) {
		if (n % i == 0 && n1 % i == 0)
			max = i;
	}
	min = (n * n1) / max;
	printf("%d\n%d", max, min);
	return 0;
}

이 문제는 최대공약수와 최소공배수를 구하여 출력하면 해결되는 문제이다.

코드의 순서는 다음과 같다.

1. 두 수를 입력받을 함수와 최대공약수, 최소공배수를 저장할 함수를 선언한다.

2. 두 수를 입력받는다.

3. i가 두 수 n과 n1보다 작을때까지 반복문을 실행한다.

이 때 n 혹은 n1 둘중 하나라도 자기자신과 같아지면 반복문은 종료된다.

4. 입력받은 두 수 n을 i 나누었을 때 나머지가 0이고, n1을 i 로 나누었을때도 나머지가 0이라면, 최대공약수에 i를 저장한다. 

나머지가 0이라는 것은 그 수의 배수라는 의미이다.

5. 최소공배수는 두 수를 곱하고 최대공약수로 나눈 값이다.

최소공배수는 두 수 이상을 곱하고 최대공약수로 나눈 값이라는 개념을 이해하고 있어야 한다.

6. 최대공약수와 최소공배수를 출력한다.

 

처음에는 최소공배수를 구하는 방법을 몰라서 해맸지만, 인터넷에서 개념을 찾아보고 해결한 문제이다. 

'TeamLog > 과제' 카테고리의 다른 글

1598. 꼬리를 무는 숫자 나열  (0) 2023.04.10
1402. 아무래도이문제는A번난이도인것같다  (0) 2023.04.09
8958. OX퀴즈  (0) 2023.04.09
1259. 팰린드롬수  (0) 2023.04.09
1546. 평균  (0) 2023.04.09
vkeod