#55. [백준_C언어] 2609 : 최대공약수와 최소공배수

 

 입력 코드 

#include <stdio.h>

main() {
	int a, b;
	scanf("%d %d", &a, &b);
	int divisor = 1, multiple;

	int max, min;
	if (a > b)
		max = a, min = b;
	else
		max = b, min = a;

	int i, j;
	for (i = max; i > 1; i--) {
		if (a%i == 0 && b%i == 0) {
			divisor = i;
			break;
		}
	}
	for (j = min;; j++) {
		if (j%a == 0 && j%b == 0) {
			multiple = j;
			break;
		}
	}

	printf("%d\n", divisor);
	printf("%d\n", multiple);
}

 

 

 코드 설명 

#수학 #정수론 #유클리드 호제법

#include <stdio.h>

main() {
	int a, b;
	scanf("%d %d", &a, &b);
	int divisor, multiple;

	int max, min;
	if (a > b)
		max = a, min = b;
	else
		max = b, min = a;

	int i, j;
	for (i = 1; i < max; i++) {
		if (a%i == 0 && b%i == 0) {
			divisor = i;
			break;
		}
	}
	for (j = min;; j++) {
		if (j%a == 0 && j%b == 0) {
			multiple = j;
			break;
		}
	}

	printf("%d\n", divisor);
	printf("%d\n", multiple);
}

처음에는 i=0으로 시작했다가 i=1로 바꿨다가 "최대"공약수임을 깨닫고 수정했다.

그랬는데 결과는 "틀렸습니다"

그래서 divisor = 1로 초기화해줬는데 맞았다. 왜지??? 뭐가 문제였던거지????

 

 

 

 문제 출처 

www.acmicpc.net/problem/2609

 

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

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

www.acmicpc.net