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

 

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

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

www.acmicpc.net

 

 

 

 

 

문제

 

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

 

 

 

입력

 

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

 

 

 

출력

 

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

 

 

 

 

코드

 

#include <iostream>

using namespace std;

int gcd(int x, int y){
	int temp, r; 

	if(x>=y) {
		temp=x;
		x=y;
		y=temp;
	} 
	
	while(1) {
		r=x%y;

		if(r==0) return y;

		temp=y;
		y=r;
		x=temp;
	}

}

int main(){
	int a, b;

	cin>>a>>b;

	int gcf=gcd(a, b);
	int lcm=gcf*(a/gcf)*(b/gcf);

	cout<<gcf<<endl<<lcm<<endl;

}

 

728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 1850번: 최대공약수  (0) 2020.05.18
백준 1934번: 최소공배수  (0) 2020.03.16
백준 10430번: 나머지  (0) 2020.03.16
백준 1168번: 요세푸스 문제 2  (0) 2020.03.16
백준 1158번: 요세푸스 문제  (0) 2020.03.16