Программа Java для поиска первых N простых чисел

Научитесь писать программу для поиска первых простых чисел с использованием Java 8 Stream API, где N — любое заданное входное число для приложения.

1. Алгоритм нахождения простых чисел

Простое число(P) — это число больше 1, единственными множителями которого являются 1 и само число(P). Обычно мы можем определить, является ли число простым или нет, выполнив следующие шаги:

  1. 2 — это простое число, которое также является четным числом. Таким образом, если заданное число N равно 2, то оно является ПРОСТЫМ числом.
  2. Если заданное число N является четным, то оно НЕ является ПРОСТЫМ числом.
  3. Найдите квадратный корень из N. Пройдитесь по всем нечетным числам до sqrt(N) и попробуйте разделить N на текущее нечетное число. Если остаток равен 0 для любого нечетного числа, то число НЕ ПРОСТОЕ.
  4. В противном случае – число ПРОСТОЕ.
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. Программа для поиска первых N простых чисел

Данная программа использует Java 8 stream apis для поиска первых N простых чисел в серии. В этой программе пользователю предлагается ввести данные, где он выбирает, сколько простых чисел он хочет сгенерировать.

Например, если пользователь введет 100, то программа сгенерирует первые 100 простых чисел(начиная с 2).

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.range(2, Integer.MAX_VALUE).filter(n -> isPrime(n)).limit(number) //Limit the number of primes here.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 :10[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]============Enter a number :30[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, 101, 103, 107, 109, 113]

Напишите мне свои вопросы, связанные с выводом всех первых N простых чисел в Java.

Ссылки:

Википедия
Документация Java IntStream

Прокрутить вверх