백준/C++
백준 2609번 : 최대공약수와 최소공배수 [C++]
대니스
2022. 8. 4. 23:37
주소 : https://www.acmicpc.net/problem/2609
2609번: 최대공약수와 최소공배수
첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.
www.acmicpc.net
소스 코드 :
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int max1(int a, int b)
{
int max = 0;
if (a == b)
max = a;
else
{
for (int i = 1;i < 10000;i++)
{
if (a % i == 0 && b % i == 0)
max = i;
}
}
return max;
}
int min1(int a, int b,int max)
{
int min = 0;
if (a == b)
min = a;
else
min = max * (a / max) * (b / max);
return min;
}
int main()
{
int a, b = 0;
int temp = 0;
int max, min = 0;
cin >> a >> b;
if (a < b)
{
temp = a;
a = b;
b = temp;
}
if (a == 1 || b == 1)
{
max = 1;
min = a * b;
}
else
{
max = max1(a, b);
min = min1(a, b, max);
}
cout << max << endl << min;
return 0;
}
마무리 : 최대공약수는 입력된 두 수가 나누어 떨어짐과 동시에 큰 수이어야하고 최소공배수는 최대공약수를 이용하여 입력된 두 수가 최대공약수를 나눌 때 나오는 몫과 최대공약수를 곱하면 된다. 수학 문제이기 때문에 어려운 문제는 아니다.