티스토리 뷰

Java+Spring/Java

[Java]스트림으로 소수 찾기

Vagabund.Gni 2022. 10. 10. 23:34
728x90
반응형

소수(Prime Number)는 1과 자기 자신으로밖에 나누어 떨어지지 않는 1 이외의 정수를 말한다.

 

지난 글에 올렸던 스트림으로 도는 이중 반복문을 소수 찾기에 응용해 보았다.

 

임의의 정수 m과 n사이의 소수를 전부 출력하는 코드이며,

 

단순이 2부터 자기 자신의 제곱근까지 전부 나누어보는 방법을 취한다.

 

조금 더 정확하게는 두 가지의 필터링을 사용하는데,

 

  • 1보다 큰 수일 것
  • 2부터 자기 자신의 제곱근(의 반올림)까지 나누어 떨어지지 않을 것

이다.

 

코드를 보자.

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

public class SearchPrimeNumbers {
    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 &&
                                IntStream.rangeClosed(2, (int)Math.sqrt(a))
                                        .allMatch(b -> a % b != 0))
                .forEach(a -> System.out.print(a + " "));
    }
}
40 80
41 43 47 53 59 61 67 71 73 79

최종연산 종류에 따라 모든 소수를 합칠 수도 있고, 개수를 세는 것도 가능하다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함