Überprüfen Sie, ob eine Zahl in Java eine Primzahl ist

1. Einleitung

Lassen Sie uns zunächst einige grundlegende Theorien durchgehen.

Einfach ausgedrückt ist eine Zahl eine Primzahl, wenn sie nur durch eins und durch die Zahl selbst teilbar ist. Die Nicht-Primzahlen werden zusammengesetzte Zahlen genannt. Und Nummer eins ist weder prim noch zusammengesetzt.

In diesem Artikel sehen wir uns verschiedene Möglichkeiten an, um die Primalität einer Zahl in Java zu überprüfen.

2. Eine benutzerdefinierte Implementierung

Mit diesem Ansatz können wir prüfen, ob eine Zahl zwischen 2 und (Quadratwurzel der Zahl) die Zahl genau teilen kann.

Die folgende Logik gibt true zurück, wenn die Zahl eine Primzahl ist:

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

3. Verwenden von BigInteger

Die BigInteger- Klasse wird im Allgemeinen zum Speichern großer Ganzzahlen verwendet, dh solcher, die größer als 64 Bit sind. Es bietet einige nützliche APIs für die Arbeit mit int- und long- Werten.

Eine dieser APIs ist isProbablePrime . Diese API gibt false zurück, wenn die Zahl definitiv zusammengesetzt ist, und true, wenn die Wahrscheinlichkeit besteht, dass es sich um eine Primzahl handelt. Dies ist nützlich, wenn Sie mit großen Ganzzahlen arbeiten, da es eine ziemlich intensive Berechnung sein kann, diese vollständig zu überprüfen.

Eine kurze Randnotiz : Die isProbablePrime- API verwendet sogenannte Primalitätstests „Miller - Rabin und Lucas - Lehmer“, um zu überprüfen, ob die Zahl wahrscheinlich eine Primzahl ist. In Fällen, in denen die Zahl weniger als 100 Bit beträgt, wird nur der "Miller-Rabin" -Test verwendet, andernfalls werden beide Tests zur Überprüfung der Primalität einer Zahl verwendet.

Der "Miller-Rabin" -Test wiederholt eine feste Anzahl von Malen, um die Primalität der Zahl zu bestimmen, und diese Iterationszahl wird durch eine einfache Überprüfung bestimmt, die die Bitlänge der Zahl und den an die API übergebenen Sicherheitswert umfasst:

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

4. Verwenden von Apache Commons Math

Die Apache Commons Math API bietet eine Methode namens org.apache.commons.math3.primes.Primes, mit der wir die Primalität einer Zahl überprüfen.

Zuerst müssen wir die Apache Commons Math-Bibliothek importieren, indem wir die folgende Abhängigkeit in unsere pom.xml einfügen :

 org.apache.commons commons-math3 3.6.1 

Die neueste Version von commons-math3 finden Sie hier.

Wir könnten die Überprüfung nur durch Aufrufen der Methode durchführen:

Primes.isPrime(number);

5. Schlussfolgerung

In diesem kurzen Artikel haben wir drei Möglichkeiten gesehen, die Primalität der Zahl zu überprüfen.

Den Code dazu finden Sie im Paket com.baeldung.algorithms.primechecker auf Github.