Eine periodische Dezimalzahl ist eine Dezimalzahl, bei der eine oder mehrere Ziffern unendlich oft wiederholt werden. Das Finden eines Zeitraums ist eine wichtige Aufgabe, insbesondere bei der Arbeit mit mathematischen Berechnungen oder Datenanalysen. In der Python-Sprache gibt es mehrere Möglichkeiten, eine Periode in einem Bruch zu finden.
Eine Möglichkeit besteht darin, den Floyd-Tortoise-Algorithmus zu verwenden. Dieser Algorithmus besteht darin, die Bewegung einer Schildkröte und eines Hasen entlang einer numerischen Achse nachzuahmen. Die Idee besteht darin, sich im Bruch zu bewegen, den Index jedes Elements zu erhöhen und das aktuelle Element mit dem vorherigen zu vergleichen. Wenn die Elemente gleich sind, haben wir eine Periode gefunden. Wenn wir das Ende der Sequenz erreicht haben und keine Periode gefunden haben, ist der Bruch irrational und hat keine Periode.
Eine andere Möglichkeit besteht darin, die integrierten Funktionen der Python-Sprache zu verwenden. Funktionen wie `from _fractions import Fraction' ermöglichen es Ihnen, einen periodischen Bruch zu finden und ihn als Stamm- oder Dezimalbruch abzurufen. Diese Funktionen sind jedoch möglicherweise ineffizient, wenn Sie mit großen Perioden oder großen Zahlen arbeiten.
Unabhängig von der gewählten Methode erfordert das Finden der Periode im Bruch Aufmerksamkeit und Genauigkeit. Es ist wichtig, die Ergebnisse zu überprüfen und sicherzustellen, dass der Algorithmus korrekt funktioniert. Python bietet praktische Werkzeuge für die Arbeit mit periodischen Brüchen, die bei der Lösung verschiedener mathematischer Probleme nützlich sein können.
Definieren einer Periode in einem Bruchteil in Python
Die Periode eines Dezimalbruchs wird als eine Folge von Ziffern bezeichnet, die sich unendlich nach dem Komma wiederholt. Zum Beispiel ist der Dezimaleintrag der Zahl 1/3, der Bruch ist 0.333. hat eine Periode von 3, die sich unendlich wiederholt.
In Python gibt es mehrere Möglichkeiten, einen Zeitraum in einem Bruchteil zu definieren. Eine davon ist die Verwendung des Floyd-Algorithmus. Floyd's Algorithmus basiert auf dem Prinzip "Schildkröte und Hase", bei dem Schildkröte und Hase zwei unterschiedliche Durchforstungsgeschwindigkeiten der Sequenz darstellen. Wenn es eine Periode in der Sequenz gibt, werden die Geschwindigkeiten der Schildkröte und des Hasen früher oder später gleich sein und sie haben eine Beobachtungsposition.
Um den Floyd-Algorithmus in Python zu implementieren, können Sie eine while-Schleife und zwei Zeiger verwenden, die sich in der Sequenz bewegen. Hier ist ein Beispielcode:
def find_period(numerator, denominator):numerator %= denominatorif numerator == 0:return 0turtle = numeratorhare = numeratorperiod = 0while True:turtle = (turtle * 10) % denominatorhare = (hare * 10) % denominatorhare = (hare * 10) % denominatorperiod += 1if turtle == hare:return period
Die angegebene Funktion find_period nimmt den Zähler und den Nenner eines Bruchs als Argumente an und gibt die Periode dieses Bruchs zurück. Zum Beispiel gibt der Aufruf von find_period(1, 3) für einen Bruch von 1/3 den Wert 1 zurück, da die Periode 3 ist.
Die Verwendung des Floyd-Algorithmus hilft dabei, die Periode in Brüchen effektiv zu finden, was bei der Arbeit mit Zahlen mit hoher Genauigkeit und bei der Analyse wiederholter Sequenzen in der Mathematik nützlich sein kann.
Was ist eine Periode?
Zum Beispiel wäre eine Periode in einer Dezimalzahl von 1/3 die Sequenz "3", da das Nachkomma unendlich wiederholt wird: 0.3333333.
Eine Periode kann mit einem Wiederholungszeichen aufgezeichnet werden, das sich normalerweise über der letzten Ziffer des Zeitraums befindet, z. B. 0.3333
Das mathematische Symbol der Periode wird als "numerischer Strich" bezeichnet und wird als oberhalb einer Ziffer bezeichnet.
Periodensuchalgorithmus
Sie können den folgenden Algorithmus verwenden, um die Periode eines Bruchs in Python zu finden:
1. Übersetzt einen Bruch in eine Zeichenfolge.
2. Finde die Position des Dezimalkommas in einer Zeichenfolge und speichere sie in einer Variablen.
3. Markieren Sie die Nachkommastellen und speichern Sie sie in einer separaten Zeile.
4. Erstellen Sie eine Schleife, die alle möglichen Periodenlängen durchläuft.
5. Erstellen Sie für jede Länge des Zeitraums eine Teilzeichenfolge aus den Ziffern nach dem Komma der gewünschten Länge.
6. Überprüfen Sie, ob die angegebene Teilzeichenfolge vor der Zeichenfolge wiederholt wird. Wenn ja, wird eine Periode gefunden, die Schleife abgeschlossen und das Ergebnis zurückgegeben.
7. Wenn nach dem Durchlaufen aller möglichen Längen keine Periode gefunden wird, ist der Bruch unendlich und hat keine Periode.
Beispiel für die Implementierung eines Algorithmus:
def find_period(fraction):fraction_str = str(fraction)decimal_position = fraction_str.find('.')digits = fraction_str[decimal_position + 1:]for period_length in range(1, len(digits) // 2 + 1):period = digits[:period_length]repeating_pattern = digits[period_length:period_length + period_length]if repeating_pattern == period:return periodreturn Nonefraction = 1/3period = find_period(fraction)print(f"The period of is ")
In diesem Beispiel nimmt die Funktion find_period() einen Bruch als Zähler und Nenner als Argument an und gibt die gefundene Periode zurück. Wenn keine Periode gefunden wird, gibt die Funktion None zurück .
Beispielcode zum Definieren eines Zeitraums
Sie können den folgenden Code verwenden, um die Dezimalzeit in Python zu bestimmen:
def find_period(numerator, denominator):remainder = numerator % denominatorremainders = []while remainder not in remainders:remainders.append(remainder)remainder *= 10remainder %= denominatorperiod_start_index = remainders.index(remainder)period_length = len(remainders) - period_start_indexreturn period_lengthnumerator = 1denominator = 7period_length = find_period(numerator, denominator)print(f"The period of / is digits.")
Um einen Zeitraum zu bestimmen, verwenden wir einen Spaltenalgorithmus. Wir behalten die Reste der Division bei und multiplizieren sie bei jeder Iteration mit 10, um die nächste Dezimalstelle zu erhalten. Wenn das nächste Guthaben mit einem der vorherigen Guthaben übereinstimmt, haben wir eine Periode gefunden.
Im obigen Codebeispiel definieren wir einen Zeitraum für einen Bruch von 1/7. Wir finden eine Periode, die 6 Ziffern lang ist.
Bewertung der Komplexität eines Algorithmus
Es gibt verschiedene Arten der Bewertung der Komplexität eines Algorithmus:
- Zeitliche Komplexität
- Räumliche Komplexität
Durch die Zeitkomplexität eines Algorithmus können Sie bestimmen, wie lange die Ausführung eines Algorithmus in Abhängigkeit von der Größe der Eingabedaten dauern wird. Es wird normalerweise in Bezug auf die Anzahl der Operationen oder die Anzahl der Iterationen gemessen, die ausgeführt werden müssen.
Anhand der räumlichen Komplexität eines Algorithmus können Sie bestimmen, wie viel zusätzlicher Speicher benötigt wird, um einen Algorithmus auszuführen, abhängig von der Größe der Eingabedaten. Sie wird normalerweise in Bezug auf die Anzahl der verwendeten Variablen oder die Größe zusätzlicher Datenstrukturen gemessen.
Die Kenntnis der Komplexität des Algorithmus hilft dem Programmierer, die Entscheidung zu treffen, den effektivsten Algorithmus in einer bestimmten Situation auszuwählen. Auf diese Weise können Sie die Leistung des Programmcodes optimieren und die Benutzererfahrung verbessern.