https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000)
www.acmicpc.net
원래 소수를 구하는 방식으로는 시간초과가 나서 에라토스테네스의 체 의 방식을 이용해야 시간초과 없이 문제를 해결 할 수 있었다.
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
|
package 수학2;
import java.io.*;
public class 소수_구하기 {
public static boolean[] primeNum;
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String [] in =br.readLine().split(" ");
int m = Integer.parseInt(in[0]);
int n = Integer.parseInt(in[1]);
primeNum = new boolean[n+1];
getPrimeNum();
for(int i=m;i<=n;i++){
if(!primeNum[i]){
sb.append(i).append("\n");
}
}
System.out.println(sb);
br.close();
}
private static void getPrimeNum() { //에라토스테네스의 체
primeNum[1] = true;
for(int i=2;i<primeNum.length;i++)
for (int j = 2; i*j <primeNum.length ; j++) {
primeNum[i*j] = true;
}
}
}
|
cs |
기존에 해결하려고 했던 방식
1
2
3
4
5
6
7
|
static boolean chkPrime(int num){
if(num <=1) return false;
for (int i = 2; i < num ; i++) {
if(num%i==0) return false;
}
return true;
}
|
cs |
'IT > 알고리즘' 카테고리의 다른 글
백준 4948 베르트랑 공준 (1) | 2020.03.01 |
---|---|
백준 3009 네번째 점 (0) | 2020.03.01 |
백준 14889 스타트와 링크 (0) | 2020.02.26 |
백준 14888 연산자 끼워넣기 (0) | 2020.02.24 |
백준 9663 N-Queen (0) | 2020.02.22 |