티스토리 뷰

728x90
반응형

문제

 

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

 

입력

 

첫째 줄에 자연수 M과 N이 빈칸을 사이에 두고 주어진다. 

(1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

 

출력

 

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

 

풀이

 

소수에 대한 기본 문제 중 마지막인 것으로 추정되는 문제다.

 

인트스트림을 이중으로 열어서 주어진 수 사이에서 소수만 골라냈다.

 

스트림은 for문에 비해 보기가 좋아 애정한다.

import java.util.Scanner;
import java.util.stream.IntStream;

public class Prob1929Stream {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int m = sc.nextInt();
        int n = sc.nextInt();

        IntStream.rangeClosed(m, n)
                .filter(a -> a > 1)
                .filter(a ->
                        IntStream.rangeClosed(2, (int) Math.sqrt(a))
                                .allMatch(b -> a % b != 0))
                .forEach(System.out::println);
    }
}
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함