코딩테스트

백준 17427 자바

whyHbr 2024. 2. 13. 23:33
728x90
반응형

https://www.acmicpc.net/problem/17427

 

g(N)은 N이하 자연수 각각 약수의 합을 더한 값

자연수 N이 주어졌을 때 1부터 N까지의 모든 자연수i에 대해 i의배수들의 합을 구하는 문제

개수가 아닌 2배의 배수를 모두 더해야 하므로 (N/i) *i

package fc.java.bytest;

import java.util.Scanner;

public class ct17427 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt(); //입력받은 자연수
        long sum = 0; // 약수의 합을 저장할 공간.1000000까지 입력할 것을 고려

        //1부터 n가지의 각 자연수 i에 대해
        for(int i = 1; i <= N; i++) {
            //i의 배수들의 합을 구하여 sum에 더함
            sum += (N/i) * i; //N을 i로 나눈 몫을 구함. 이는 i의 배수의 개수
            //이를 다시 i와 곱해 i의 배수들의 합을 구함
            //이렇게 구한 값을 sum에 저장
        }
        System.out.println(sum);
        //반복문을 통해 1부터 N까지의 각 자연수 i에 대해 i의 배수들의 합을 계산.
        //이를 누적하여 sum에 저징
        //이 과정을 통해 1부터 N까지의 모든 자연수에 대한 약수의 합을 구할 수 있다.
    }
}

 

반복문을 통해 1부터 N까지의 각 자연수 i에 대해 i의 배수들의 합을 구한다

i의 배수들의 합은 N을 i로 나눈 몫에 i를 곱한 값으로 구할 수 있다.

주어진 자연수 N에 대해 약수의 합을 구함

728x90

'코딩테스트' 카테고리의 다른 글

JAVA - 백준 31458  (0) 2024.03.18
SQL TEST - 평균 일일 대여 요금 구하기  (0) 2024.03.15
SQL TEST - 흉부외과 또는 일반외과 의사 목록 출력하기  (0) 2024.03.14
백준 1037 자바  (0) 2024.02.12
백준 4375- 자바  (1) 2024.02.09