문제

자연수 n개가 주어진다. 이 자연수의 공약수를 모두 구하는 프로그램을 작성하시오.

입력

첫째 줄에 n이 주어진다. n은 2 또는 3이다. 둘째 줄에는 공약수를 구해야 하는 자연수 n개가 주어진다. 모든 자연수는 10^8 이하이다.

출력

입력으로 주어진 n개 수의 공약수를 한 줄에 하나씩 증가하는 순서대로 출력한다.

예제 입력 1

2
75 125

예제 출력 1

1
5
25

더보기

Solution

#include<stdio.h>

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

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

	return x;
}

int main(void)
{
	int n, num[3], gcd_num;

	scanf("%d", &n);
	for(int i=0;i<n;i++)
		scanf("%d", &num[i]);

	gcd_num=n==2?gcd(num[0],num[1]):gcd(gcd(num[0],num[1]),num[2]);

	for(int i=1;i<=gcd_num;i++)
		if(gcd_num%i==0)
			printf("%d\n", i);

	return 0;
}
728x90

+ Recent posts