백준 1929번 소수 구하기 자바 Java (☆공부 244일차)
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
https://gimbalja.tistory.com/412
에라토스테네스의 체
소수를 구할 때 가장 잘 알려진 알고리즘이 에라토스테네스의 체 유튜브에 치면 그 원리가 자세히 나와있다 간단하게 보자면, 위의 표에서 소수인 2, 3, 5, 7, 11... 들의 배수를 하나하나 지우면서
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의 차이가 크다