최대공약수, 최소공배수

wellsbabo·2023년 3월 22일
0

코드모음

목록 보기
2/3

약수 구하기

약수이기 때문에 반복문을 전체가 아닌 중간값까지만 돌리면 된다.
중간값까지의 수들로 num을 나눠서 나누어 떨어지는게 약수

//  약수
    public ArrayList getDivisor(int num) {
        ArrayList result = new ArrayList();

        for(int i = 1; i <= (int)num/2; i++){
            if(num % i == 0){
                result.add(i);
            }
        }
        result.add(num);


        return result;
    }

최대공약수

유클리드 호제법을 사용한다
-> a,b의 최대 공약수는 a/b에서 나온 나머지 r과 b의 최대공약수와 같다.

//  GCD: the Greatest Common Denominator
    public int getGCD(int numA, int numB){
    	if(a%b == 0){
        	return b;
    	}
    	return gcd(b,a%b);
	}

최소공배수

최소공배수는 두 수의 곱을 최대공약수로 나눈 값이다.

//  LCM: the Lowest Common Multiple
    public int getLCM(int numA, int numB) {
        int lcm = -1;

        int gcd = getGCD(numA, numB);

        if(gcd != -1){
            lcm = numA * numB / gcd;
        }


        return lcm;
    }

0개의 댓글