Проверьте, простое ли число в 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.