본문 바로가기
Programming/Algorithm

[백준] 1929번 : 소수 구하기 (Java)

by 안녕주 2021. 8. 6.

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

        StringTokenizer st;
		st = new StringTokenizer(br.readLine()," ");
        
        int M = Integer.parseInt(st.nextToken()); 
        int N = Integer.parseInt(st.nextToken()); 


        for(int i = M; i <=N; i++){
            boolean Test = true;

            if (i == 1){
                continue;
            }
            for(int j = 2; j <= Math.sqrt(i); j++){
                if (i % j == 0) {
                    Test = false;
                    break;
                }
            }

            if (Test){
                System.out.println(i);
            }
        }
    }
}

풀이

오예 ~! 여태 소수 푸는 문제를 풀다보니 쉽게 풀 수 있었다.

 

처음에 i ==1 인 경우를 고려하지 않다보니 틀렸었다. 하지만 코드를 추가하니 맞았다~!

댓글