Faktoryzacja liczby, czyli rozłożenie liczby na czynniki pierwsze jest jednym z tych zagadnień maturalnych, który sprawia sporo problemów. Algorytm łatwo jest napisać w wersji nieoptymalnej i stracić punkty na maturze. Wzorcowa złożoność tego algorytmu jest $$O(\sqrt(n)),$$gdzie n to rozkładana liczba. Rozłożenie liczby na czynniki pierwsze, inaczej faktoryzacja tej liczby, polega na przedstawieniu jej w postaci iloczynu liczb pierwszych. Idea algorytmu jest prosta.
Poniżej znajduje się program, rozkłada wczytaną liczbę naturalną większą od 1 na czynniki pierwsze.
#*****************www.algorytm.edu.pl****************
def faktoryzacja(liczba):
czynnik = 2 # (*)
while czynnik*czynnik <= liczba:
while liczba % czynnik == 0: # (****)
print(czynnik, end=' ')
liczba = liczba//czynnik # (***)
czynnik += 1 # (**)
if liczba > 1:
print(liczba) # (*****)
# --------blok główny programu -----------
liczba = int(input())
faktoryzacja(liczba)