Unterricht und Kurs · Station 2 von 10
Primfaktorzerlegung
Ein Programm, das eine Zahl in ihre Primfaktoren zerlegt und die Rechenzeit mitschreibt.

Ziel
Ein mathematisches Verfahren selbst in Schleifen übersetzen, ohne fertige Bibliothek.
Umsetzung
- Drei Versionen mit eigener Logik: Zahlen, die noch zerlegt werden müssen, landen in einer Liste, gefundene Primzahlen in einer zweiten.
- Geschachtelte Schleifen prüfen die Teiler von beiden Seiten gleichzeitig.
- Start- und Endzeit zeigen, wie lange die Zerlegung gedauert hat.
Code
Die Zerlegung in drei verschachtelten Schleifen
while True:
if sum(control_numbers) == 0:
end = datetime.now()
endtime = end.strftime('%H:%M:%S')
if len(prime_number) == 1:
print(line)
print(f"|Startzeit: {starttime} | Endzeit: {endtime}]")
print(f"Die Zahl {number:.0f} ist eine Primzahl")
print(line)
break
else:
print(line)
print(f"[Startzeit: {starttime} | Endzeit: {endtime}]")
print(f"Deine zerlegte Zahl: {number:.0f}")
print(" x ".join(f"{zahl:.0f}" for zahl in prime_number))
print(line)
break
else:
while True:
if control_numbers[0] <= 2:
prime_number.append(control_numbers[0])
control_numbers.pop(0)
break
elif control != control_numbers[0] or counter > counter2:
control = 0
control += control_numbers[0]
counter = 2
counter2 = 0
counter2 = counter2 + control_numbers[0] - 1
else:
while True:
if control_numbers[0] <= 2 or counter > counter2:
prime_number.append(control_numbers[0])
control_numbers.pop(0)
break
elif control_numbers[0] % counter != 0 and control_numbers[0] % counter2 != 0:
counter += 1
counter2 -= 1
print(f"{control_numbers} {counter} {counter2}")
else:
control_numbers.append(counter)
control_numbers.append(control_numbers[0] / counter)
control_numbers.pop(0)
break
breakZahlen wandern zwischen zwei Listen, bis nur noch Primzahlen übrig sind.
Was ich gelernt habe
Einen Ablauf erst auf Papier zu durchdenken, und wie schnell geschachtelte Schleifen unübersichtlich werden.