Prüfen Sie, ob eine Zahl in Java eine Primzahl ist

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

1. Einführung

Lassen Sie uns zunächst dieselbe grundlegende Theorie 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 Primzahl noch Komposit.

In diesem Artikel werden verschiedene Möglichkeiten zum Überprüfen der Primalität einer Zahl in Java vorgestellt.

2. Eine benutzerdefinierte Implementierung

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

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

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

3. Verwenden vonBigInteger

Die KlasseBigInteger wird im Allgemeinen zum Speichern großer Ganzzahlen verwendet, d. h. solcher, die größer als 64 Bit sind. Es bietet einige nützliche APIs für die Arbeit mitint- undlong-Werten.

Eine dieser APIs istisProbablePrime. Diese API gibtfalse zurück, wenn die Zahl definitiv zusammengesetzt ist, undtrue, wenn eine gewisse Wahrscheinlichkeit besteht, dass es sich um eine Primzahl handelt. Es ist nützlich, wenn Sie mit großen ganzen Zahlen arbeiten, da es eine ziemlich intensive Berechnung sein kann, diese vollständig zu überprüfen.

A quick side-note - DieisProbablePrime-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 kleiner als 100 Bit ist, wird nur der "Miller - Rabin" -Test verwendet, andernfalls werden beide Tests zum Überprüfen der Primalität einer Zahl verwendet.

Der Miller-Rabin-Test iteriert eine feste Anzahl von Malen, um die Primzahl der Zahl zu bestimmen, und diese Iterationszahl wird durch eine einfache Prü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 namensorg.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 unserepom.xml einfügen:


    org.apache.commons
    commons-math3
    3.6.1

Die neueste Version von commons-math3 finden Sie unterhere.

Wir könnten die Prüfung einfach durch Aufrufen der Methode durchführen:

Primes.isPrime(number);

5. Fazit

In dieser kurzen Beschreibung haben wir drei Möglichkeiten zur Überprüfung der Primzahl kennengelernt.

Den Code dazu finden Sie im Paketcom.example.primecheckerover on Github.