Hackerrank – Project Euler+ #003 – Largest prime factor

Hackerrank – Popis problému

Celý popis zadania sa nacháza – Hackerrank.

Riešenie

Použijeme algoritmus, kde vytvoríme zoznam všetkých prvočíselných deliteľov, resp. urobíme rozklad na prvočísla – faktorizácia.

Určíme si počiatočné prvočíslo. Najmenšie prvočíslo je 2. Zadané číslo delíme zvoleným deliteľom (prvočíslom) dovtedy, pokiaľ to je možné. Potom pripočítame 1 k deliteľovi. Postup opakujem, až kým zadané číslo, po postupnom delení, je menšie ako 1. Vyberieme najväčší deliteľ..

Algoritmus môžeme zrýchliť, ak tesne po inkrementovaní skontrolujeme, či je druhá mocnina deliteľa viac ako aktuálne číslo po vykonaní delenia. Vtedy už nebudeme vedieť vydeliť iným deliteľom ako so sebou samým. Pretože, ak by sme ešte dokázali vydeliť deliteľom, podiel by bol celé číslo, ktoré sa už nachádza v zozname. Mali by sme ho už v prvej časti algoritmu. Pridáme do zoznamu len samého seba.

Existujé aj iné algoritmy, napr. Pollard Rho alebo Kvadratické sito

Vytvoril som riešenie v týchto programovacích jazykoch:

Všetky riešenia sú dostupné aj na mojom GitHub profile.

Java

Leave a Reply

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *