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) int d, dlim, m = 1;
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) int d, dlim, m = 1;
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ő.

Kapcsolódó cikkek