Coursework · Stop 2 of 10
Prime factorization
A program that breaks a number into its prime factors and notes the time it took.

Goal
Turn a mathematical method into loops myself, without a ready-made library.
Implementation
- Three versions with my own logic: numbers still to be split go into one list, the primes found into a second one.
- Nested loops check the divisors from both ends at once.
- Start and end time show how long the factorization took.
Code
The factorization in three nested loops
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
breakNumbers move between two lists until only primes are left.
What I learned
Thinking a process through on paper first, and how quickly nested loops get hard to follow.