코딩테스트/백준
[Java] 백준 2247번 : 실질적 약수
Eungae-D
2024. 4. 19. 14:42
728x90
문제
2247번: 실질적 약수
첫째 줄에 CSOD(n)을 1,000,000으로 나눈 나머지를 출력한다.
www.acmicpc.net
풀이 방법
1. N 이하의 수에서 어떤 수 i를 약수로 가지는 수의 개수는 N/i개 이다.
2. 그러므로 N/i(자신을 포함한 약수의 개수) - 1 * i(값) 으로 구하면 됩니다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private static StringBuilder sb;
private static BufferedReader br;
private static StringTokenizer st;
private static int N;
private static long sum = 0;
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
N = Integer.parseInt(br.readLine());
}
//실행
public static void process() {
for(int i = 2 ; i < N ; i++){
sum+=(N/i-1)*i;
}
sum %= 1000000;
System.out.println(sum);
}
public static void main(String[] args) throws Exception {
input();
process();
}
}