728x90
▶ 1929번 문제 - 소수 구하기
▶ 풀이방법
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Stack<Integer> stack = new Stack<>();
StringTokenizer st = new StringTokenizer(br.readLine());
int m = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
for(int i = n; i >= m; i--) stack.push(i);
while(!stack.isEmpty()) {
int num = stack.pop();
int ck = 0;
for(int i = 2; i <= Math.sqrt(num) ; i++) {
if(num % i == 0) {
ck++;
break;
}
}
if(num > 1 && ck == 0) bw.write(String.valueOf(num) + "\n");
}
bw.flush();
bw.close();
br.close();
}
}
++ num이 소수인지 아닌지 판별하는 for문에서 범위를 2~num까지를 가지고 판별했는데, 시간초과오류발생.
++ 범위를 2~num의 제곱근 까지의 숫자( Math.sqrt(num) )로 수정해 판별하는 시간을 줄여 시간초과오류 해결할 수 있었음.
728x90