[백준] java 1929 소수 구하기

Sundae·2023년 12월 12일
0

백준

목록 보기
36/63
post-thumbnail
post-custom-banner

https://www.acmicpc.net/problem/1929


문제

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

입력

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

풀이 과정

바로 전에 풀었던 문제와 똑같은 문제인 것 같다.

이전 문제에서 풀었던 방법과 같은 방법을 사용하였다.

2부터 루트n까지 n을 나눠보고, 나누어떨어지는 경우가 있다면 n은 소수가 아니다.

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

public class Main{
	// 소수 판별 메서드
	public static boolean isPrime( int M ){
    	// 1은 소수가 아니므로 false
		if( M == 1 ) return false;
		for( int i = 2; i * i <= M; i++ ){
        	// 나누어 떨어진다면 소수가 아님
			if( M % i == 0 )
				return false;
		}
		return true;
	}
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		int M = Integer.parseInt(st.nextToken()), N = Integer.parseInt(st.nextToken());

		while( N >= M ){

			if( isPrime(M) )
				sb.append(M).append("\n");

			M++;
		}

		System.out.println(sb);
	}
}

출력 조건은 M부터 N 사이에 있는 소수를 출력하는 것이다. 먼저 M에 대해서 소수인지 아닌지 판별한다. 만약 소수가 맞다면 출력한다. 이 과정을 M에 1씩 더하여 N까지 반복한다.

profile
성장 기록 / 글에 오류가 있다면 댓글 부탁드립니다.
post-custom-banner

0개의 댓글