1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) { FastScanner sc = new FastScanner(); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(gcd(a,b)); System.out.println(lcm(a,b)); } public static long lcm(long a, long b) { int gcd_value = gcd((int) a, (int) b); if (gcd_value == 0) return 0; // 인수가 둘다 0일 때의 에러 처리 return Math.abs((a * b) / gcd_value); } // 최대 공약수 계산 함수; 최소 공배수 계산에 필요함 // 최대 공약수는 그리 큰 숫자가 나오지 않기에 int형으로 public static int gcd(int a, int b) { while (b != 0) { int temp = a % b; a = b; b = temp; } return Math.abs(a); } } class FastScanner { BufferedReader br; StringTokenizer st; public FastScanner(String s) { try { br = new BufferedReader(new FileReader(s)); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } public FastScanner() { br = new BufferedReader(new InputStreamReader(System.in)); } String nextToken() { while (st == null || !st.hasMoreElements()) { try { st = new StringTokenizer(br.readLine()); } catch (IOException e) { throw new RuntimeException(e); } } return st.nextToken(); } int nextInt() { return Integer.parseInt(nextToken()); } long nextLong() { return Long.parseLong(nextToken()); } double nextDouble() { return Double.parseDouble(nextToken()); } String nextLine() { String str = ""; try { str = br.readLine(); } catch (IOException e) { e.printStackTrace(); } return str; } } | cs |
'알고리즘' 카테고리의 다른 글
[11729번] 하노이 탑 이동 순서 (0) | 2017.08.13 |
---|---|
[11053번] 가장 긴 증가하는 부분 수열 (0) | 2017.08.13 |
[9084번] 동전 (0) | 2017.08.13 |
[5598번] 카이사르 암호 (0) | 2017.08.13 |
[2616번] 소형기관차 (0) | 2017.08.13 |