문제

n개의 정수를 입력받아서 최대공약수와 최소공배수를 구하는 프로그램을 작성하여 보자.

 

입력형식

첫째 줄에 N (2≤N≤10) 을 입력받고 다음 줄에 N개의 정수를 공백으로 구분하여 입력받는다.

입력받는 정수는 2이상 10 000 이하이다.데이터의 크기가 주어진 범위를 벗어나는 입력은 없다.

 

출력형식

입력받은 정수들의 최대공약수와 최소공배수를 공백으로 구분하여 출력한다.

최소공배수는 20억 이하의 정수이다.

 

<코드>

#include <stdio.h>

int gcd_get(int x, int y)
{	
	int result = 1;
	
	for(int i=1; i<=x; i++)
	{
		if(!(x%i) && !(y%i))
			result = i;
	}
	
	return result;
}

int lcm_get(int x, int y)
{
	return x*y/gcd_get(x,y);
}

int main()
{
	int N;
	int arr[10] = {0, };
	int gcd, lcm;
	
	scanf("%d", &N);
	
	for(int i=0; i<N; i++)
		scanf("%d", &arr[i]);
	
	gcd = lcm = arr[0];
	
	for(int i=1; i<N; i++)
	{
		gcd = gcd_get(gcd, arr[i]);
		lcm = lcm_get(lcm, arr[i]);
	}
	
	printf("%d %d", gcd, lcm);
	
	return 0;
}

'코딩 > Beginner Coder' 카테고리의 다른 글

2811 : 소수와 합성수  (0) 2020.05.28
1009 : 각 자리수의 역과 합(Number Reverse)  (0) 2020.05.28
1658 : 최대공약수와최소공배수  (0) 2020.05.26
2809 : 약수  (0) 2020.05.26
1402 : 약수 구하기  (0) 2020.05.25

+ Recent posts