티스토리 뷰

728x90

문제

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

 

1929번: 소수 구하기

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

www.acmicpc.net

 

풀이 및 소스코드

 

m부터 n까지 돌면서 현재 판별하고 있는 숫자의 루트값까지 나눠지는 지 확인해주면 된다.

단, m이 1과 2일 때는 따로 케이스를 분류해따져주어야 한다.

참고로 1은 소수가 아님 주의 !!!!!!

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 NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();

		st = new StringTokenizer(br.readLine());
		int m = Integer.parseInt(st.nextToken());
		int n = Integer.parseInt(st.nextToken());
		for (int i = m; i <= n; i++) {
			if(i==1) continue;
			if(i==2) {
				sb.append("2").append("\n");
				continue;
			}
			boolean c = true;
			for (int j = 2; j <= Math.sqrt(i); j++) {
				if (i % j == 0) {
					c = false;
					break;
				}
			}
			if (c) {
				sb.append(i).append("\n");
			}
		}

		System.out.println(sb);
	}
}
반응형