Wszystkie dzielniki¶
Opis problemu¶
Implementacja¶
Opis¶
Funkcja divisors
przyjmuje jeden argument: liczbę n
, dla której chcemy znaleźć dzielniki.
- Znalezienie dzielników: w pierwszej części funkcji, generowana jest lista dzielników
n
od 1 do pierwiastka kwadratowego zn
. Używane jest tutaj wyrażenie list składanych, które sprawdza, czyn
dzieli się przezx
bez reszty (n `mod` x == 0
). - Komplementarne dzielniki: w drugiej części, funkcja znajduje dzielniki
n
będące wynikiem dzielenian
przezx
w odwrotnym zakresie, od pierwiastka kwadratowego zn
do 1. Dodatkowo, warunek(n `div` x /= x)
zapobiega powtórzeniom, gdyn
jest kwadratem jakiejś liczby naturalnej. - Połączenie wyników: wyniki obu części są łączone za pomocą operatora
++
, tworząc pełną listę dzielnikówn
.
Kluczowym aspektem tej funkcji jest jej optymalizacja. Poprzez ograniczenie wyszukiwania do pierwiastka kwadratowego liczby n
, znacznie redukuje się ilość wymaganych obliczeń. Jest to standardowa technika w algorytmach związanych z dzielnikami, która znacząco zwiększa ich wydajność.
W części main
programu, definiujemy liczbę n
(w tym przykładzie 16) i używamy funkcji divisors
, aby znaleźć jej dzielniki. Następnie lista dzielników jest wyświetlana.