Zum Hauptinhalt springen

Überprüfen der gegenseitigen Einfachheit von Zahlen in Python: Schnelle und effiziente Implementierung

In der Mathematik wird der Begriff "gegenseitige Einfachheit" verwendet, um sich auf eine Situation zu beziehen, in der zwei Zahlen außer 1 keine gemeinsamen Teiler haben. Gegenseitige Einfachheit kann in verschiedenen Bereichen nützlich sein, z. B. in der Kryptographie oder bei der Optimierung von Algorithmen.

Python bietet uns als eine leistungsfähige und flexible Programmiersprache mehrere Möglichkeiten, Zahlen auf gegenseitige Einfachheit zu überprüfen. In diesem Artikel werden wir uns einige einfache und effektive Methoden zur Implementierung dieser Validierung ansehen.

Eine der einfachsten und verständlichsten Methoden zur Überprüfung auf gegenseitige Einfachheit besteht darin, den euklidischen Algorithmus zu verwenden, um den größten gemeinsamen Teiler (Knoten) zweier Zahlen zu finden. Wenn der Knoten 1 ist, sind die Zahlen gegenseitig einfach. In Python kann dieser Algorithmus mit einer Rekursion oder Schleife implementiert werden.

Was ist gegenseitige Einfachheit

Für Zahlen, die nicht gegenseitig einfach sind, unterscheidet sich ihr KNOTEN von 1 und wird durch ihre gemeinsamen Teiler definiert.

Gegenseitige Einfachheit ist in der Zahlentheorie und in verschiedenen Bereichen der Mathematik unerlässlich. Diese Eigenschaft vereinfacht eine Vielzahl von Algorithmen, beispielsweise bei der Suche nach dem kleinsten gemeinsamen Vielfachen oder der gezielten Division.

Gegenseitige Einfachheit wird auch in der Kryptographie verwendet, um sichere Verschlüsselungsalgorithmen zu erstellen und die Einfachheit großer Zahlen zu überprüfen.

In Python gibt es mehrere Möglichkeiten, die gegenseitige Einfachheit zweier Zahlen zu testen, einschließlich des euklidischen Algorithmus zum Finden von Knoten und zur Verwendung der Math-Bibliothek.

Warum die Zahlen auf gegenseitige Einfachheit überprüfen

Das Verständnis der gegenseitigen Einfachheit von Zahlen kann in mehreren Bereichen hilfreich sein. Zum Beispiel in der Kryptographie: um Verschlüsselungsschlüssel und Dokumentsignaturschlüssel zu generieren, müssen Primzahlpaare verwendet werden.

Die Kenntnis der gegenseitigen Einfachheit ermöglicht es Ihnen auch, verschiedene Probleme zu lösen, die mit Brüchen und rationalen Zahlen verbunden sind. Wenn Sie beispielsweise Brüche reduzieren und ihre einfachsten Brüche definieren, müssen Sie wissen, ob der Zähler und der Nenner gegenseitig einfach sind.

Grundlegende Operationen im Zusammenhang mit gegenseitiger Einfachheit umfassen die Überprüfung auf gegenseitige Einfachheit, das Finden des kleinsten gemeinsamen Teilers und das Finden des umgekehrten Elements modulo.

In der Programmiersprache Python kann die Überprüfung von Zahlen auf gegenseitige Einfachheit mit dem Euler-Algorithmus oder dem euklidischen Algorithmus implementiert werden.

Euklidischer Algorithmus zur Validierung

Der Algorithmus besteht aus den folgenden Schritten:

  1. Wenn beide Zahlen 0 sind, sind sie nicht gegenseitig einfach.
  2. Wenn eine der Zahlen 0 ist und die andere nicht 0 ist, sind sie nicht gegenseitig einfach.
  3. Der Rest der Division einer größeren Zahl durch eine kleinere Zahl wird zu einer neuen größeren Zahl, und eine kleinere Zahl wird zu einer neuen kleineren Zahl.
  4. Wiederholen Sie Schritt 3, bis die kleinere Zahl 0 ist.
  5. Wenn der Rest der Division einer größeren Zahl durch eine kleinere Zahl 1 ist, sind die Zahlen gegenseitig einfach. Wenn der Rest nicht gleich 1 ist, sind die Zahlen nicht gegenseitig einfach.

Der euklidische Algorithmus ermöglicht eine schnelle Überprüfung der gegenseitigen Einfachheit zweier Zahlen und kann in verschiedenen Aufgaben im Zusammenhang mit Mathematik und Kryptographie verwendet werden.

Wie der euklidische Algorithmus funktioniert

Der Prozess des euklidischen Algorithmus beginnt mit zwei gegebenen Zahlen a und b. Wenn b Null ist, ist der Knoten(a, b) gleich a. Andernfalls können Sie den Rest der Division a durch b berechnen und a durch b und b durch den Rest der Division a durch b ersetzen. Dieser Vorgang wird fortgesetzt, bis der Wert von b gleich Null ist. Zu diesem Zeitpunkt enthält a den Knoten(a, b).

Wenn Sie beispielsweise die Zahlen 18 und 12 angeben, können wir im ersten Schritt den Rest der Division von 18 durch 12 berechnen, was 6 ist. Dann ersetzen wir 18 durch 12 und 12 durch 6. Als Ergebnis der Wiederholung dieses Prozesses erhalten wir nacheinander einen Rückstand von 6, 0. Wenn b gleich Null wird, ist der KNOTEN(a, b) 6.

Der euklidische Algorithmus ist eine effiziente und schnelle Methode, um die Knoten von zwei Zahlen zu finden. Es wird in einer Vielzahl von Bereichen verwendet, einschließlich Kryptographie, Mathematik und Programmierung.

Beispiel für den euklidischen Algorithmus in Python

Betrachten wir ein Beispiel für die Arbeit des euklidischen Algorithmus mit zwei Zahlen - 24 und 18:

SchrittTeilbarTeilerRest
124186
21860

Im ersten Schritt werden die Zahlen 24 und 18 übernommen. Wir teilen das Teilbare durch einen Teiler und erhalten einen Rest von 6. Dann nehmen wir den vorherigen Teiler und den Rest und wiederholen die Division, bis der Rest 0 ist. Im zweiten Schritt ist der Rest 0, was bedeutet, dass wir einen KNOTEN gefunden haben - er ist 6.

In Python kann ein Algorithmus wie folgt implementiert werden:

def euclidean_algorithm(a, b):while b != 0:a, b = b, a % breturn aa = 24b = 18gcd = euclidean_algorithm(a, b)print("Наибольший общий делитель чисел", a, "и", b, "равен", gcd)

Wenn das Programm ausgeführt wird, wird die Meldung angezeigt: "Der größte gemeinsame Teiler der Zahlen 24 und 18 ist 6".

Der euklidische Algorithmus ermöglicht es Ihnen, Zahlen effektiv auf gegenseitige Einfachheit zu überprüfen, da die Zahlen, wenn ihr KNOTEN 1 ist, gegenseitig einfach sind.

Eratosthenes Sieb zur Überprüfung

Um zu überprüfen, ob zwei Zahlen mit einem Eratostherstellungs-Gitter zueinander einfach sind, müssen Sie das Gitter auf den maximalen Wert der beiden Zahlen aufbauen und prüfen, ob diese Zahlen gemeinsame einfache Teiler haben.

Betrachten wir ein Beispiel: Lassen Sie uns zwei Zahlen a und b haben. Zuerst konstruieren wir ein eratosthenes Sieb auf den maximalen Wert von a und b. Dann prüfen wir jede Primzahl aus dem Sieb, beginnend mit dem kleinsten Wert. Wenn wir eine Primzahl finden, die sowohl a als auch b teilt, sind diese Zahlen nicht gegenseitig einfach. Andernfalls, wenn wir alle Primzahlen aus dem Gitter überprüft haben und keine gemeinsamen Teiler gefunden haben, sind a und b gegenseitig Primzahlen.

Hier ist ein Python-Beispielcode, der eine Überprüfung der gegenseitigen Einfachheit mithilfe eines Eratostherstellers implementiert:

def eratosthenes(n):primes = [True] * (n + 1)p = 2while p * p 

Теперь мы можем использовать функцию check_coprime(a, b), чтобы проверить, являются ли числа a и b взаимно простыми:

a = 24b = 35if check_coprime(a, b):print(a, 'и', b, 'являются взаимно простыми числами.')else:print(a, 'и', b, 'не являются взаимно простыми числами.')

Dieser Code gibt das Ergebnis zurück: "24 und 35 sind keine gegenseitig Primzahlen."

Ein eratosthenes Sieb bietet daher eine effektive Methode, um die gegenseitige Einfachheit zweier Zahlen in Python zu testen.

Wie funktioniert ein eratosthenes Sieb

Zuerst wird eine Liste von Zahlen von $2$ bis $N$ erstellt, wobei $N$ die Zahl ist, bis zu der wir alle Primzahlen finden möchten. Dann beginnen wir mit $2$ und streichen alle Zahlen aus, die ein Vielfaches von $2$ sind. Danach gehen wir zur nächsten nicht durchgestrichenen Zahl über (dh $3$) und löschen alle Zahlen, die ein Vielfaches von $3$ sind. Wir setzen diesen Prozess fort, bis wir die Zahl $\sqrt$ erreichen, da alle Zahlen, die größer als $\sqrt$ sind, bereits gestrichen sind.

Wenn der Algorithmus abgeschlossen ist, werden alle nicht durchgestrichenen Zahlen in der Liste Primzahlen sein.

So sieht die Implementierung eines Eratosthenes-Gitters in Python aus:

# Функция, реализующая решето Эратосфенаdef sieve_of_eratosthenes(n):primes = []sieve = [True] * (n + 1)for p in range(2, int(n ** 0.5) + 1):if sieve[p]:for i in range(p * 2, n + 1, p):sieve[i] = Falsefor p in range(2, n + 1):if sieve[p]:primes.append(p)return primes# Пример использования функцииn = 20print(f"Простые числа до : ")

Das Ergebnis der Ausführung dieses Codes lautet wie folgt: Primzahlen bis zu 20: [235711131719].

Ein eratosthenes Sieb bietet daher eine effektive Möglichkeit, alle Primzahlen bis zu einer bestimmten Zahl zu finden. Dieser Algorithmus kann bei vielen Aufgaben nützlich sein, bei denen mit Primzahlen gearbeitet werden muss.

Ein Beispiel für die Arbeit eines Eratosthen-Gitters in Python

Ein Beispiel für ein eratosthenes Gitter in Python:

def sieve_of_eratosthenes(n):primes = [True] * (n + 1) # Erstellen Sie eine Liste mit der Größe (n+1) und füllen Sie sie an allen Stellen mit True aus.[0] = primes[1] = False # 0 und 1 sind keine Primzahlen for p in range(2, int(n ** 0.5) + 1): # Durchlaufen Sie alle Zahlen von 2 bis zur Quadratwurzel von nif primes[p]:for i in range(p * p, n + 1, p): # Aktualisiert alle Vielfachen der aktuellen Primzahl pprimes[i] = Falsereturn [x for x in range(n + 1) if primes[x]]n = 100 # Geben Sie die obere Grenze des Bereichs einargimes = sieve_of_eratosthenes(n) # Wir erhalten eine Liste von Primzahlen
In diesem Beispiel erstellen wir eine Primes-Liste mit der Länge n+1 und füllen sie mit True aus. Dann sortieren wir die Zahlen aus, die ein Vielfaches anderer Zahlen sind. Das Ergebnis der Ausführung des Programms ist eine Liste von Primzahlen bis zur angegebenen oberen Grenze von n.


Mit einem Eratosthengitter können Primzahlen effektiv in ausreichend großen Bereichen gefunden und für verschiedene Aufgaben verwendet werden.