Programozás‎ > ‎Feladatok‎ > ‎Szorzattá bontás‎ > ‎

Megoldás

Algoritmus


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.

Forráskódok

Comments