개인 공부/백준
17427번 약수의 합 2
코딩하는 동훈
2024. 8. 13. 13:59
문제:
두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더한 값이고, f(A)로 표현한다. x보다 작거나 같은 모든 자연수 y의 f(y)값을 더한 값은 g(x)로 표현한다.
자연수 N이 주어졌을 때, g(N)을 구해보자.
입력:
첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
출력:
첫째 줄에 g(N)를 출력한다.
접근 방법
- 1부터 N까지 진행하면서 x 일때 x의 배수값에 x를 더하면 각 약수의 합 배열 (f(x) 배열)이 만들어짐
- n까지 f(x) 배열을 더함
코드
접기/펼치기
import java.util.ArrayList;
import java.util.Scanner;
public class Main
{
public static void main(String []args)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
long arr[] = new long[n+1];
for(int i = 1 ; i <= n ; i ++)
{
for(int j=i; j<=n; j = j+i)
{
arr[j] +=i;
}
}
long sum = 0;
for(int i = 1; i <=n; i ++)
{
sum += arr[i];
}
System.out.println(sum);
}
}