Python :: Aufgabe #297 :: Lösung #2

2 Lösungen Lösungen öffentlich
#297

Periodenlänge von Stammbrüchen

Fortgeschrittener - Python von JKooP - 01.11.2020 um 09:50 Uhr
Stammbruch nennt man einen Bruch mit einer 1 im Zähler und einer beliebigen natürlichen Zahl im Nenner.
Schreibe eine Methode/Funktion, mit der man die Periodenlänge eines solchen Bruchs berechnen kann.

Beispiele:

1/4 = 0,25 --> Periodenlänge ist 0, da der Bruch abbricht
1/6 = 0,166666… = 0,16 --> Periodenlänge ist 1, da sich nur die Ziffer 6 wiederholt
1/11 = 0,090909… = 0.09 --> Periodenlänge ist 2, da sich die Ziffern 0 und 9 wiederholen

Viel Spaß
#2
vote_ok
von Klaus (1960 Punkte) - 10.12.2020 um 12:24 Uhr
Quellcode ausblenden Python-Code
data = [4, 6, 11, 19, 20, 21, 22, 43]

def period(value):
    prime_factors = get_prime_factors(value)
    if not prime_factors:
        return '0, da der Bruch abbricht'
    else:
        value = 1
        for element in prime_factors:
            value *= element
        index = 1
        while True:
            if 10 ** index % value == 1:
                return index
            else:
                index += 1

def get_prime_factors(value):
    test_factor = 2
    prime_factors = []
    while value > 1:
        while value % test_factor == 0:
            value /= test_factor
            prime_factors.append(test_factor)
        test_factor += 1
    while 2 in prime_factors:
        prime_factors.remove(2)
    while 5 in prime_factors:
        prime_factors.remove(5)
    return prime_factors

for element in data:
    print(f'1/{element} = {1/element} --> Periodenlänge ist {period(element)}')

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben