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

2022. 5. 5. 11:43C언어/백준

-Class2 : Silver5

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

 

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

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

www.acmicpc.net

 

 

-결과

 

-코드

#include <stdio.h>

int main() {
	int a, b;
	int x, y;
		
	scanf("%d %d", &a, &b);

	for (int i = 1; i <= a && i <= b; i++) {
		if (a % i == 0 && b % i == 0)
			x = i;	
	}
	
	printf("%d\n", x);
	printf("%d", a * b / x);
}

 

-풀이

이 문제는 우선 최대공약수와 최소공배수를 구하는 방식을 알아야 한다.

일단 최대공약수부터 구하면, 자연수이므로 for문의 i는 1부터 시작하고,  i는 a와 b보다 작아야하며

i로 a와 b를 각각 나눴을 때 나머지가 0이 되어야 한다. 그 조건을 모두 만족해야 하므로 &&이고,

그런 i를 x라 하고 x를 출력한다.

최소공배수는 a와 b를 곱하고 , 인수분해 했을 때 공통으로 들어가있는 x인 최대공약수를 나누면 나온다.

'C언어 > 백준' 카테고리의 다른 글

17478: 재귀함수가 뭔가요?  (0) 2022.05.05
2751: 수 정렬하기2  (0) 2022.05.05
1436: 영화감독 숌  (0) 2022.05.01
1181: 단어 정렬  (0) 2022.05.01
1018: 체스판 다시 칠하기  (0) 2022.05.01