Проверьте, является ли число простым в Java

Проверьте, простое ли число в Java

1. Вступление

Во-первых, давайте рассмотрим ту же основную теорию.

Проще говоря, число является простым, если оно делится только на единицу и само число. Непростые числа называются составными числами. И номер один не является ни простым, ни составным.

В этой статье мы рассмотрим различные способы проверки простоты числа в Java.

2. Индивидуальная реализация

При таком подходе мы можем проверить, может ли число от 2 до (квадратный корень из числа) точно разделить число.

Следующая логика вернетtrue, если число простое:

public boolean isPrime(int number) {
    return number > 2
      && IntStream.rangeClosed(2, (int) Math.sqrt(number))
      .noneMatch(n -> (number % n == 0));
}

3. ИспользуяBigInteger

КлассBigInteger обычно используется для хранения целых чисел большого размера, то есть больше 64 бит. Он предоставляет несколько полезных API для работы со значениямиint иlong.

Один из этих API -isProbablePrime. Этот API возвращаетfalse, если число определенно составное, и возвращаетtrue, если есть некоторая вероятность того, что оно простое. Это полезно при работе с большими целыми числами, потому что это может быть довольно интенсивное вычисление, чтобы проверить их полностью.

A quick side-note - APIisProbablePrime использует так называемые тесты простоты Миллера - Рабина и Лукаса - Лемера, чтобы проверить, является ли число простым. В тех случаях, когда число меньше 100 бит, используется только тест «Миллера-Рабина», в противном случае оба теста используются для проверки простоты числа.

Тест «Миллера-Рабина» повторяет фиксированное число раз, чтобы определить простоту числа, и этот счетчик итераций определяется простой проверкой, которая включает длину в битах числа и значение достоверности, передаваемое API:

public boolean isPrime(int number) {
    BigInteger bigInt = BigInteger.valueOf(number);
    return bigInt.isProbablePrime(100);
}

4. Использование Apache Commons Math

API Apache Commons Math предоставляет метод с именемorg.apache.commons.math3.primes.Primes,, который мы будем использовать для проверки простоты числа.

Во-первых, нам нужно импортировать библиотеку Apache Commons Math, добавив следующую зависимость в нашpom.xml:


    org.apache.commons
    commons-math3
    3.6.1

Последнюю версию commons-math3 можно найтиhere.

Мы могли бы сделать проверку, просто вызвав метод:

Primes.isPrime(number);

5. Заключение

В этой быстрой записи мы увидели три способа проверки простоты числа.

Код для этого можно найти в пакетеcom.example.primecheckerover on Github.