더 많이 실패하기

백준 1929번 소수 구하기 자바 Java (☆공부 244일차) 본문

알고리즘/백준

백준 1929번 소수 구하기 자바 Java (☆공부 244일차)

김발자~ 2023. 3. 31. 18:09
반응형

1929 소수 구하기

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

 

1929번: 소수 구하기

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

www.acmicpc.net

 

 

 

 


백준 1929번 문제 소수 구하기


문제


 

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
2 초 256 MB 232240 66233 46546 26.675%

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

예제 입력 1

3 16

예제 출력 1

3
5
7
11
13
 
 

 


과정 생각해보기


 

 

https://gimbalja.tistory.com/53

 

백준 1929번 소수 구하기 / 백준 단계별로 풀어보기 8단계 / 8. 기본 수학 2

백준 8단계 4번 문제 - 1929 소수 구하기 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나

gimbalja.tistory.com

 

무려 반년 전에 풀었던 문제
 

 

에라토스테네스의 체를 그대로 사용한다
 
 
 

정답 인정 코드


 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class Main {
    
    public static boolean prime[];
 
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        StringBuilder sb = new StringBuilder();
        
        int m = Integer.parseInt(st.nextToken());
        int n = Integer.parseInt(st.nextToken());
 
        prime = new boolean[n+1];
        getPrime();
        
        for(int i = m; i < n+1; i++) {
            if(!prime[i]) {
                sb.append(i+"\n");
            }
        }
        
        System.out.println(sb);
    }
    
    // 에라토스테네스의 체
    public static void getPrime() {
        prime[0= true;
        prime[1= true;
        
        for(int i = 2; i <= Math.sqrt(prime.length); i++) {
            for(int j = i*i; j < prime.length; j+=i) {
                prime[j] = true;
            }
        }
    }
 
}
 
cs
 

 

 


스캐너와 StringBuilder의 차이가 크다

반응형
Comments