문제
자연수 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
'백준 알고리즘' 카테고리의 다른 글
<백준 알고리즘> 3049번: 다각형의 대각선 (0) | 2020.12.22 |
---|---|
<백준 알고리즘> 2312번: 수 복원하기 (0) | 2020.12.22 |
<백준 알고리즈> 4796번: 캠핑 (0) | 2020.12.22 |
<백준 알고리즘> 2935번: 소음 (0) | 2020.12.22 |
<백준 알고리즘> 2163번: 초콜릿 자르기 (0) | 2020.12.22 |