Algorithm/백준

백준 [17427] 약수의 합 2 (자바)

youngjae-kim 2024. 6. 11. 10:53
728x90
반응형

문제

풀이

배수의 성질을 이용한 약수를 구하는 방법을 사용한다.

알고리즘 풀이에서 배수를 이용하여 약수를 구하는 방식이 선호된다.

 

6을 까지 약수들을 보면

1 -> 1

2 -> 1 2

3 -> 1 3

4 -> 1 2 4

5 -> 1 5

6 -> 1 2 3 6

 

6이하 자연수 중 1을 약수로 가지는 수의 개수 = 6개 = 6 / 1

6이하 자연수 중 2을 약수로 가지는 수의 개수 = 3개 = 6 / 2

6이하 자연수 중 3을 약수로 가지는 수의 개수 = 2개 = 6 / 3

6이하 자연수 중 4을 약수로 가지는 수의 개수 = 1개 = ...

6이하 자연수 중 5을 약수로 가지는 수의 개수 = 1개 = N / M

6이하 자연수 중 6을 약수로 가지는 수의 개수 = 1

 

약수의 합은 1 ~ N 까지 모든 (M * N / M)의 합을 구해주면 된다.

 

정답코드

package com.baekjoon.p17427;

import java.util.*;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();

        long sum = 0;

        for (int i = 1; i <= N; i++) {
            sum += (long) (i * (N / i));
        }

        System.out.println(sum);
        sc.close();
    }
}
728x90
반응형