최대공약수와 최소공배수

문제

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

입력

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

출력

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

코드

#include <iostream>
using namespace std;

int main(void) {
	cin.tie(NULL);  ios::sync_with_stdio(false);
	int fir, sec;
	int big, small;
	int max, min;
	cin >> fir >> sec;

	if (fir < sec){
		small = fir; big = sec;
	}
	else {
		small = sec; big = fir;
	}

	for (int i = 1; i <= big; i++) {
		if (small % i == 0 && big % i == 0) {
			max = i;
		}
	}

	for (int i = 1; i <= big; i++) {
		if ((small * i) % big == 0) {
			min = small * i; break;
		}
	}

	cout << max << '\n';
	cout << min;

}

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN