A megoldás algoritmusa
A feladat nagyon hasonlít a partíció problémára. Csak arra kell vigyázni, hogy az 1-et ne engedjük meg, mint tényező, ha el akarjuk kerülni a végtelen ciklust.
Bont(n, szint)
Ha n = 1 akkor Ki: szam[1], szam[2], ..., szam[szint]
különben
Ciklus d := szam[szint]-től n-ig
Ha n osztható d-vel akkor
szam[szint + 1] := d
Bont(n / d, szint + 1)
Elágazás vége
Ciklus vége
Elágazás vége
Eljárás vége
Kezdetben szam[0] = 2 és a Bont(n, 0) hívás indítja a szorzatok kiszámítását.
Megoldások