[백준] 4134번 - 소수 찾기

팥빵·2025년 10월 28일

Baekjoon

목록 보기
41/49

>>문제 바로가기<<

입력받은 숫자보다 큰 숫자 중
가장 작은 소수를 찾아 출력하는 문제이다.


입력받는 숫자가 굉장히 크다!!
자료형 long으로 받는것은 기본이며,
짝수를 미리 걸러내고
홀수 & 제곱근만 탐색하는 것이 추천된다.

long sqrt = (long)Math.sqrt(num);

long형 변수 num을 제곱근으로 바꾸는 메소드이다.

위 정보를 바탕으로 설계한 코드는 다음과 같다.

import java.util.*;
import java.io.*;

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));
        
        long N = Long.parseLong(br.readLine());
        for(long i=0; i<N; i++){
        	long num = Long.parseLong(br.readLine());
            bw.write(calculate(num) + "\n");
        }
        
        bw.flush();
        bw.close();
        
    }
    public static long calculate(long n){
    	if(n <= 2){ return 2; }
        while(true){
        	if(isPrime(n)){ return n; }
            n++;
        }
    }
    
    public static boolean isPrime(long n){
    	if(n % 2 == 0){ return false; }	// 짝수 제외
        
        long sqrt = (long)Math.sqrt(n);	// 제곱근까지만 판단
        for(long i=3; i<=sqrt; i+=2){	// 홀수만 판단
        	if(n % i == 0){ return false; }
        }
        return true;
    }
}

맞았습니다!!

profile
반갑습니다

0개의 댓글