Wróć do: Algorytmy
średni liczby pierwszefaktoryzacjamatura rozszerzona z informatyki

Rozkład na czynniki pierwsze

Rozkłada liczbę naturalną na iloczyn liczb pierwszych (faktoryzacja) przez kolejne dzielenia.

01

Opis

Rozkład liczby na czynniki pierwsze to przedstawienie liczby naturalnej jako iloczynu liczb pierwszych. Każda liczba całkowita większa od 1 ma jednoznaczny rozkład (z dokładnością do kolejności).

Przykłady:

24 = 2 · 2 · 2 · 3

60 = 2 · 2 · 3 · 5

Algorytm sprawdza kolejne liczby d zaczynając od 2. Dopóki d dzieli n bez reszty, dopisujemy d do wyniku i dzielimy n przez d. Następnie zwiększamy d o 1 i kontynuujemy. Sprawdzamy tylko do √n – jeśli po tym n > 1, sama wartość n też jest czynnikiem pierwszym.

Na maturze: używany przy obliczaniu NWD, NWW, sumy dzielników i analizie liczb.

02

Pseudokod

funkcja rozklad_pierwszy(n):
  czynniki  pusta lista
  d  2
  dopóki d * d  n:
    dopóki n mod d = 0:
      dodaj d do czynniki
      n  n div d
    d  d + 1
  // jeśli zostało coś większego od 1, to też jest pierwsze
  jeżeli n > 1:
    dodaj n do czynniki
  zwróć czynniki
03

Implementacja w Pythonie

def rozklad_na_czynniki(n):
    czynniki = []
    d = 2
    while d * d <= n:
        while n % d == 0:
            czynniki.append(d)
            n //= d
        d += 1
    # jeśli n nadal jest większe od 1, to ostatni czynnik pierwszy
    if n > 1:
        czynniki.append(n)
    return czynniki

# Przykład użycia
print(rozklad_na_czynniki(60))
# Wynik: [2, 2, 3, 5]
print(rozklad_na_czynniki(97))
# Wynik: [97]

Złożoność obliczeniowa

CzasowaO(√n)
PamięciowaO(log n)

Powiązane zagadnienia