Java

[백준 1644] 소수의 연속합 (JAVA)

iheeeee6-6 2023. 5. 7. 22:30
728x90

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

 

1644번: 소수의 연속합

첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000)

www.acmicpc.net

 

1) n까지의 소수를 구한다. -> 에라토스테네스의 체를 사용하여 구해야 시간초과가 나지 않는다!

2) 소수 연속 합을 확인한다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	static int n;

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = Integer.parseInt(br.readLine());

		// 에라토스테네스의 체
		boolean[] arr = new boolean[n + 1];
		arr[0] = arr[1] = true;
		for (int j = 2; j * j <= n; j++) {
			if (!arr[j]) {
				for (int i = j*j; i <= n; i+=j) {
					arr[i]=true;
				}
			}
		}

		int result = 0;
		int sum = 0;
		for (int i = 2; i <= n; i++) {
			if (arr[i]) {
				continue;
			}
			for (int j = i; j <= n; j++) {
				if (!arr[j]) {
					sum += j;
					if (sum > n) {
						sum = 0;
						break;
					} else if (sum == n) {
						result++;
						sum = 0;
						break;
					}
				}
			}
		}

		System.out.println(result);
	}

}

'Java' 카테고리의 다른 글

[백준 1515] 수 이어 쓰기 (JAVA)  (0) 2023.05.17
[백준 1527] 금민수의 개수 (JAVA)  (0) 2023.05.12
[백준 3273] 두 수의 합 (JAVA)  (1) 2023.05.06
[백준 1300] K번째 수 (JAVA)  (0) 2023.05.05
[백준 1238] 파티 (JAVA)  (0) 2023.05.04