Jakie jest najlepsze podejście do obliczania największego czynnika pierwszego z liczby?
Myślę, że najbardziej wydajne byłyby następujące:
- Znajdź najniższą liczbę pierwszą, która dzieli czysto
- Sprawdź, czy wynik podziału jest liczbą pierwszą
- Jeśli nie, znajdź następny najniższy
- Idź do 2.
Opieram to założenie na tym, że łatwiej jest obliczyć małe czynniki pierwsze. Czy to w porządku? Jakie inne podejścia powinienem rozważyć?
Edycja: Teraz zdałem sobie sprawę, że moje podejście jest daremne, jeśli w grze występują więcej niż 2 czynniki pierwsze, ponieważ krok 2 kończy się niepowodzeniem, gdy wynik jest iloczynem dwóch innych liczb pierwszych, dlatego potrzebny jest algorytm rekurencyjny.
Edytuj ponownie: A teraz zdałem sobie sprawę, że to nadal działa, ponieważ ostatnia znaleziona liczba pierwsza musi być najwyższa, dlatego każde dalsze testowanie wyniku niepierwotnego z kroku 2 spowoduje mniejszą liczbę pierwszą.
1.
znajdź dowolną liczbę, która wyraźnie dzieli (dla i = 2 do int (sqr (num))) 2.
podziel przez tę liczbę (num = num / i) i powtarzaj się, dopóki nic nie zostanie znalezione w 1. interwał 3.
num jest największym czynnikiem