티스토리 뷰

728x90
반응형

문제

 

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

 

입력

 

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

 

출력

 

주어진 수들 소수의 개수를 출력한다.

 

풀이

 

입력 값으로 리스트를 생성한 다음 스트림을 이중으로 사용해서 소수를 판별했다.

 

소수 판별법에 따라 연산 속도를 위해 1부터 √a 까지만 순회하도록 했다.

 

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

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

        int n = sc.nextInt();

        List<Integer> list = new ArrayList<>();

        for(int i = 0; i < n; i++){
            list.add(sc.nextInt());
        }

        int result = (int) list.stream()
                .filter(a ->
                        a > 1 &&
                        IntStream.rangeClosed(2, (int)Math.sqrt(a))
                        .allMatch(b -> a % b != 0))
                .count();

        System.out.println(result);
    }
}
5
2 5 19 20 61
4
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함