Megállapítás minden osztója programozás
Nemrég szembe egy ilyen probléma:
Mivel egy bizonyos pozitív szám, meg kell találni az összes osztók más, mint ő maga.
A feladat az, hogy írjon egy gyorsabb algoritmus lehetséges, és természetesen
helyes.
Az első ötlet az volt, hogy rendet a kisebb szám, ellenőrizve oszthatóság, de a teljes
mellszobor adta széleskörű alkalmazhatóságának, meg kell megoldani a problémát, mint például
, ez az algoritmus működik sokáig, miután néhány módosítást
Megvan itt egy ilyen algoritmus, a felső határ a komplexitás a legrosszabb esetben.
Az algoritmus kitölti vektor detelyami számát.
void find_divs (int n, vektor
divs.push_back (1);
Tudok valahogy javítani az algoritmus? Vagy van egy gyorsabb módszerrel megoldani ezt a problémát?
Re: Megtalálni az összes osztói
Tudok valahogy javítani az algoritmus?
Először meg kell kijavítani. Ellenőrizze, hogy kapsz 12 és 36.
Vagy van egy gyorsabb módszerrel megoldani ezt a problémát?
Először kap a bomlás a bemenő számokat prímszám. Ezután végiglépdelni kombinációi elsődleges tényező.
Re: Megtalálni az összes osztói
Először meg kell kijavítani. Ellenőrizze, hogy kapsz 12 és 36.
Igen, az algoritmus nem működik megfelelően). Azt hiszem, ez a helyes:
void find_divs (int n, vektor
divs.push_back (1);
Először kap a bomlás a bemenő számokat prímszám. Ezután végiglépdelni kombinációi elsődleges tényező.
Igen, volt egy ilyen ötlet, hogy brute force kombinációk megy valahova ismétléseket, mint ebben az esetben, hogy értékelje a bonyolultsága az algoritmus? Van-e képlet száma prímtényezőjét számát. Vagy legalábbis meg kell becsülni a felső határ, azaz Keresse meg a számot, amely lehet bővíteni, hogy a maximális számú elsődleges tényező.