Научитесь писать программу для нахождения всех простых чисел от 1 до N, используя потоковый API Java 8, где N — любое заданное входное число для приложения.
1. Алгоритм нахождения простых чисел
Простое число(P) — это число больше 1, единственными множителями которого являются 1 и само число(P). Обычно мы можем определить, является ли число простым или нет, выполнив следующие шаги:
- 2 — это простое число, которое также является четным числом. Таким образом, если заданное число N равно 2, то оно является ПРОСТЫМ числом.
- Если заданное число N является четным, то оно НЕ является ПРОСТЫМ числом.
- Найдите квадратный корень из N. Пройдитесь по всем нечетным числам до sqrt(N) и попробуйте разделить N на текущее нечетное число. Если остаток равен 0 для любого нечетного числа, то число НЕ ПРОСТОЕ.
- В противном случае – число ПРОСТОЕ.
static boolean isPrime(int number) {if(number <= 2)return number == 2;elsereturn (number % 2) != 0&&IntStream.rangeClosed(3,(int) Math.sqrt(number)).filter(n -> n % 2 != 0).noneMatch(n ->(number % n == 0));}
2. Программа Java для поиска простых чисел от 2 до N
В приведенной ниже программе мы использовали IntStream для перебора чисел от 2 до 100 и нахождения всех простых чисел между ними.
package com.howtodoinjava.example;import java.util.List;import java.util.Scanner;import java.util.stream.Collectors;import java.util.stream.IntStream;public class Main{public static void main(String[] args){//Read input from console - optionalScanner scan= new Scanner(System.in);System. out.println("Enter a number : ");int number = scan.nextInt();scan.close();List<Integer> primes = IntStream.rangeClosed(2, number).filter(n -> isPrime(n)).boxed().collect(Collectors.toList());System.out.println(primes);}static boolean isPrime(int number) {if(number <= 2)return number == 2;elsereturn (number % 2) != 0&&IntStream.rangeClosed(3,(int) Math.sqrt(number)).filter(n -> n % 2 != 0).noneMatch(n ->(number % n == 0));}}
Вывод программы.
Enter a number :100[2, 3, 5, 7, 11, 13, 17, 19,23, 29, 31, 37, 41, 43, 47, 53,59, 61, 67, 71, 73, 79, 83, 89, 97]
Из вывода видно, что программа способна вывести все простые числа от 2 до 100.
Ссылки: