문제

두 수 a와 b가 주어졌을 때, a와 b의 최소 공배수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 n이 주어진다. 다음 n개 줄에는 a와 b가 주어진다. a와 b사이에는 공백이 하나 이상 있다. 두 수는 백만보다 작거나 같은 자연수이다.

출력

각 테스트 케이스에 대해서 입력으로 주어진 두 수의 최소공배수를 출력한다.

예제 입력 1

3
15 21
33 22
9 10

예제 출력 1

105
66
90

더보기

Solution

#include<stdio.h>

unsigned long long int gcd(unsigned long long int x,unsigned long long int y)
{
	if(x<y)
	{
		unsigned long long int temp=x;
		x=y;
		y=temp;
	}

	while(y!=0)
	{
		unsigned long long int temp=x%y;
		x=y;
		y=temp;
	}

	return x;
}

unsigned long long int lcm(unsigned long long int x,unsigned long long int y)
{
	return x*y/gcd(x,y);
}

int main(void)
{
	int n;

	scanf("%d", &n);

	for(int i=0;i<n;i++)
	{
		unsigned long long int a, b;

		scanf("%llu %llu", &a, &b);

		printf("%llu\n", lcm(a,b));
	}

	return 0;
}
728x90

+ Recent posts