-
[JAVA] 17427번: 약수의 합2Algorithm/백준 알고리즘 2021. 7. 18. 18:24
문제 설명
- 두 자연수 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의 최댓값이 1,000,000이므로 1부터 n까지 약수를 구한 후 합을 구하면 시간초과가 날 것이다.
2. 1부터 n까지의 약수를 적어보고 약수들의 갯수를 보면 규칙을 찾을 수 있다.코드
import java.util.*; class Main { public static long ans = 0; public static void main(String args[]) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for(int i = 1; i <= num; i++){ ans = ans + (i * (num / i)); } System.out.println(ans); } }
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
[JAVA] 2309번: 일곱 난쟁이 (0) 2021.07.19 [JAVA] 1929번: 소수 구하기 (0) 2021.07.18 [JAVA] 1935번: 후위 표기식2 (0) 2021.07.12 [JAVA] 1929번: 소수구하기 (0) 2021.07.12 [JAVA] 1934번: 최소공배수 (0) 2021.07.12