백준 13241 - 최소공배수

황재진·2024년 2월 25일

백준

목록 보기
4/54
post-thumbnail

두 수가 주어졌을 때 최소공배수를 구하는 문제입니다.

최소공배수는 최대공약수를 이용해 구할 수 있습니다.
최대공약수는 유클리드 호제법 이라는 알고리즘을 이용해 빠르게 구할 수 있습니다.

#include<iostream>

long long int gcd(const long long int a, const long long int b);

int main()
{
	std::cin.tie(NULL);
	std::ios_base::sync_with_stdio(false);

	long long int a, b, result = 1;
	std::cin >> a >> b;

	long long int temp = gcd(a, b);

	result = a * b / temp;

	std::cout << result << "\n";

	return 0;
}

long long int gcd(const long long int a, const long long int b)
{
	long long int copy_a;
	long long int copy_b;
	if (a < b)
	{
		copy_a = b;
		copy_b = a;
	}
	else
	{
		copy_a = a;
		copy_b = b;
	}

	long long int r;
	while (copy_b != 0)
	{
		r = copy_a % copy_b;
		copy_a = copy_b;
		copy_b = r;
	}

	return copy_a;
}
profile
프로그래밍, 쉐이더 등 이것저것 다해보는 게임 개발자입니다

0개의 댓글