Exercises
백준 프로그래밍: GCD
sysout.초코우유
2018. 4. 23. 17:36
주어진 숫자열의 나머지가 모두 같도록 하는 제수를 구하는 프로그램.
N개의 수에서 제일 작은 한 숫자를 골라 나머지 숫자열에서 모두 빼낸 후에 N-1개의 숫자열의 GCD를 구하면 끝나는 문제.
아래는 그 코드
public class GCD { static final int BIG=10000; GCD(int[] list){ printDivisors(gcd(list)); } public int gcd(int[] list) { int min=chooseMin(list); for(int i=0;i<list.length;i++) { if(list[i]!=min) list[i]=list[i]%min; } if(chooseMin(list)==min) return min; else return gcd(list); } public void printDivisors(int a) { for(int i=2;i<=a;i++) { if(a%i==0) System.out.printf("%d ",i); } } public int chooseMin(int[] list) { int min=BIG; for(int i=0;i<list.length;i++) { if(list[i]!=0 && min>list[i]) min=list[i]; } return min; } public static void main(String[] args) { int multiplier=0, numberOfNumbers=100; int[] numberList=new int[numberOfNumbers]; multiplier=(int)(15*Math.random())+2; System.out.println(multiplier); System.out.println("생성된 숫자열"); for(int i=0;i<numberOfNumbers;i++) { numberList[i]=multiplier*(int)(100*Math.random()); System.out.printf("%d ",numberList[i]); } System.out.println(); GCD gcd=new GCD(numberList); } }