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

Vaibhhav Khetarpal 10 Oktober 2023
  1. Verwenden Sie die einfache Iterationsmethode, um eine Primzahl in Python zu bestimmen
  2. Verwenden Sie die Funktion sympy.isprime(), um zu überprüfen, ob die angegebene Zahl eine Primzahl in Python ist
Überprüfen Sie, ob eine Zahl in Python eine Primzahl ist

Eine Primzahl kann als natürliche Zahl ohne andere positive Teiler dargestellt werden, außer der Zahl 1 und sich selbst. Die Zahl 1 wird in der Liste der Primzahlen nicht gezählt.

In diesem Tutorial werden die verschiedenen Methoden erläutert, mit denen Sie überprüfen können, ob eine Zahl eine Primzahl ist.

Verwenden Sie die einfache Iterationsmethode, um eine Primzahl in Python zu bestimmen

Bei dieser Methode verwenden wir eine einfache Iterationsmethode mit einer for- oder while-Schleife. Durchlaufen Sie die Zahlen beginnend bei 2 und gehen Sie bis zu K/2 und prüfen Sie, ob eine dieser Zahlen K teilt.

Wird eine Zahl gefunden, die diesem Kriterium entspricht, wird False zurückgegeben. Wenn andererseits alle Zahlen dieses Kriterium nicht erfüllen, ist die angegebene Zahl K eine Primzahl und der Wert True wird zurückgegeben.

Der folgende Code verwendet die einfache Iterationsmethode, um zu überprüfen, ob die angegebene Zahl in Python eine Primzahl ist.

k = 13

# 1 not being a prime number, is ignored
if k > 1:
    for i in range(2, int(k / 2) + 1):
        if (k % i) == 0:
            print("It is not a prime number")
            break
    else:
        print("It is a prime number")

else:
    print("It is not a prime number")

Ausgabe:

It is a prime number

Sie können den obigen Code optimieren, indem Sie einige Änderungen anwenden. Führen Sie die folgenden Optimierungen durch, um den Code noch schneller zu machen:

*Überprüfen Sie, bis die Wurzel der angegebenen Zahl erreicht ist, anstatt nach der genauen Zahl zu suchen. Dieser Prozess eliminiert im Wesentlichen Redundanz, die auftritt, wenn ein größerer Faktor der Zahl K ein Vielfaches eines kleineren Faktors ist, über den bereits iteriert wurde.

*Alle Primzahlen existieren in der Form 6n±1, wobei 2 und 3 die einzigen Ausnahmen sind. Daher ist es die effizientere Lösung, die Teilbarkeit der gegebenen Zahl durch 2 und 3 zu überprüfen und dann jede Zahl mit der Form 6n±1 zu überprüfen.

Der folgende Code verwendet die optimierte einfache Iterationsmethode, um zu überprüfen, ob die angegebene Zahl in Python eine Primzahl ist.

def isitPrime(k):
    if k == 2 or k == 3:
        return True
    if k % 2 == 0 or k < 2:
        return False
    for i in range(3, int(k ** 0.5) + 1, 2):
        if k % i == 0:
            return False

    return True


print(isitPrime(13))

Ausgabe:

True

Das optimierte Iterationsverfahren macht es um ca. 30% schneller und effizienter als das einfache Iterationsverfahren.

Verwenden Sie die Funktion sympy.isprime(), um zu überprüfen, ob die angegebene Zahl eine Primzahl in Python ist

SymPy ist eine Python-Bibliothek, die zur Implementierung symbolischer Mathematik verwendet wird. Es soll ein vereinfachtes Computeralgebra-System (CAS) sein, das alle wesentlichen Funktionen enthält. Für diese Methode ist die Installation dieses Moduls erforderlich, und es kann einfach mit dem Befehl pip heruntergeladen werden.

Die sympy.isprime() ist eine eingebaute Funktion des SymPy-Moduls und kann zur Überprüfung möglicher Primzahlen verwendet werden. Sie ist eine direkte Funktion und gibt True zurück, wenn die zu prüfende Zahl eine Primzahl ist und False, wenn die Zahl nicht prim ist.

Der folgende Code verwendet die Funktion sympy.isprime(), um zu überprüfen, ob die angegebene Zahl in Python eine Primzahl ist.

from sympy import *

isprime(8)
isprime(11)

Ausgabe:

False
True

Wir sollten beachten, dass jede negative Zahl nicht unter die Kriterien der Primzahlen fällt. Die Ausgabe dieser Funktionen kann variieren, wenn eine negative Zahl mit ihr verglichen wird.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn