반응형
백준 1929 소수 구하기 문제입니다.
https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net
다음과 같이 시간초과가 뜨더군요 그래서 저는 자바에서 제공되는 Math 클래스의 sqrt인 제곱근을 활용하였습니다.
소수를 구하는 prime(int n) 메서드입니다.
저번에 블로그에 올렸던 코드와 유사하지만 Math.sqrt(n)으로 반복문의 반복을 줄였습니다.
static boolean prime(int n) {
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0)
return false;
}
return true;
}
전체 코드입니다.
Scanner가 아닌 버퍼드리더를 사용하여 시간을 줄였습니다.
import java.io.*;
import java.math.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] s = br.readLine().split(" ");
int a = Integer.parseInt(s[0]);
int b = Integer.parseInt(s[1]);
for (int i = a; i <= b; i++) {
if (i == 1)
continue;
if (prime(i)) {
bw.write(i + "\n");
}
}
bw.flush();
bw.close();
}
static boolean prime(int n) {
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0)
return false;
}
return true;
}
}
반응형
'🔑알고리즘 > baekjoon' 카테고리의 다른 글
백준 10845 : 큐 - 자바(java) 문제 풀이 (0) | 2022.05.10 |
---|---|
백준 4948 : 베르트랑 공준 - 자바 문제 해결 코드 (0) | 2022.01.25 |
백준 11653 : 소인수분해 - 자바 문제 해결 코드 (0) | 2022.01.24 |
백준 2581 : 소수 - JAVA(자바) 해결 코드 (0) | 2022.01.23 |
백준 9012 : 괄호 자바 문제 풀이 (Stack 사용 문제) (0) | 2022.01.02 |