빙응의 공부 블로그

[Programmers]LV.1 약수의 개수와 덧셈 본문

Argorithm

[Programmers]LV.1 약수의 개수와 덧셈

빙응이 2023. 12. 28. 16:38


📝풀이

제일 중요한 것은 수학을 아는 것 소인수 분해를 구현할 수 있으면 풀 수 있다.

    public static int countDivisors(int n) {
        int count = 1;

        for (int i = 2; i <= n; i++) {
            if (n % i == 0) {
                int exponent = 0;
                while (n % i == 0) {
                    n /= i;
                    exponent++;
                }
                count *= (exponent + 1);
            }
        }

        return count;
    }

소인수 분해의 식이다.

 

class Solution {
    public int solution(int left, int right) {
        int answer = 0;
        for(int i = left; i <= right; i++){
            if(countDivisors(i)%2 == 0)
                answer += i;
            else
                answer -= i;
        }
        return answer;
    }
    public static int countDivisors(int n) {
        int count = 1;

        for (int i = 2; i <= n; i++) {
            if (n % i == 0) {
                int exponent = 0;
                while (n % i == 0) {
                    n /= i;
                    exponent++;
                }
                count *= (exponent + 1);
            }
        }

        return count;
    }
}