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 |