본문 바로가기
알고리즘 문제연습/기초 알고리즘

[007] 최대 공약수 구하기

by 은z 2021. 5. 13.

문제

- 두 수의 최대 공약수를 구하시오.

- 배열, for, if 사용

 

보완할 점

- 좀 더 코드를 간결하게 할 수 있을 것 같은데... 고민해서 수정하기

 

소스코드

import java.util.Arrays;

public class Maxnumber {

	public static void main(String[] args) {
		// 최대 공약수 구하기
		int a = 12;
		int b = 18;
		int[] a_arr = new int[a];
		int[] b_arr = new int[b];
		
		for(int i=1; i<=a; i++) { //1~12
			for(int j=i+1; j<=a; j++) { //2~12
				if(i*j == a) { //곱해서 12가 나오면~
					a_arr[i-1] = i;
					a_arr[j-1] = j;
					break;
				}
			}
		}
		for(int i=1; i<=b; i++) { //1~12
			for(int j=i+1; j<=b; j++) { //2~12
				if(i*j == b) { //곱해서 12가 나오면~
					b_arr[i-1] = i;
					b_arr[j-1] = j;
					break;
				}
			}
		}
		System.out.println(Arrays.toString(a_arr));
		System.out.println(Arrays.toString(b_arr));
		int[] c_arr = new int[a+b];
		
		for (int i = 0; i < a_arr.length; i++) {
			for (int j = 0; j < b_arr.length; j++) {
				if(a_arr[i] == b_arr[j]) { //같은 값이 나오면
					c_arr[i] = b_arr[j];
				}
			}
		}
		int max = 0;
		for(int i=0; i < c_arr.length; i++) {
			if(max < c_arr[i]) {
				max = c_arr[i];
			}
		}
		System.out.println("최대 공약수 >> " + max);

	}

}

댓글