Algorithm/JUNGOL
[정올] 1002 : 최대공약수, 최소공배수
Gyuri
2022. 1. 20. 18:47
문제
n개의 정수를 입력받아서 최대공약수와 최소공배수를 구하는 프로그램을 작성하여 보자.
입력형식
첫째 줄에 N (2≤N≤10) 을 입력 받고 다음 줄에 N개의 정수를 공백으로 구분하여 입력 받는다.
입력 받는 정수는 2이상 10,000 이하이다. 데이터의 크기가 주어진 범위를 벗어나는 입력은 없다.
출력형식
입력받은 정수들의 최대공약수와 최소공배수를 공백으로 구분하여 출력한다.
최소공배수는 20억 이하의 정수이다.
입력 예
3
2 8 10
출력 예
2 40
코드
import java.util.Scanner;
public class Main {
public static int get_gcd(int a, int b) {
int ans = 0;
for(int i=1; i<=a; i++) {
if(a%i == 0 && b%i==0) {
ans = i;
}
}
return ans;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[] = new int[n];
for(int i=0; i<n; i++) { // n개의 정수 입력받기
arr[i] = sc.nextInt();
}
int gcd = arr[0]; // 최대공약수
int lcm = arr[0]; // 최소공배수
for(int i=0; i<n; i++) {
gcd = get_gcd(gcd, arr[i]);
lcm = (lcm * arr[i]) / get_gcd(lcm, arr[i]);
}
System.out.print(gcd + " " + lcm);
}
}