Shankssovy čtvercové formy faktorizace - Shankss square forms factorization - Wikipedia
tento článek potřebuje pozornost odborníka na matematiku.Listopadu 2008) ( |
Tento článek obsahuje a seznam doporučení, související čtení nebo externí odkazy, ale její zdroje zůstávají nejasné, protože jí chybí vložené citace.Březen 2015) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Shanksův čtverec formuje faktorizaci je metoda pro celočíselná faktorizace vymyslel Daniel Shanks jako vylepšení Fermatova faktorizační metoda.
Úspěch Fermatovy metody závisí na nalezení celých čísel a takhle , kde je celé číslo, které se má započítat. Vylepšení (všiml si Kraitchik ) je hledat celá čísla a takhle . Hledání vhodného páru nezaručuje faktorizaci ve výši , ale to z toho vyplývá je faktorem , a existuje velká šance, že hlavní dělitelé z jsou rozděleny mezi tyto dva faktory, takže výpočet největší společný dělitel z a dá netriviální faktor .
Praktický algoritmus pro hledání párů které uspokojí byl vyvinut Shanksem, který jej pojmenoval Square Forms Factorization nebo SQUFOF. Algoritmus lze vyjádřit ve smyslu pokračujících zlomků nebo ve smyslu kvadratických forem. Ačkoli jsou nyní k dispozici mnohem efektivnější metody faktorizace, SQUFOF má tu výhodu, že je dostatečně malý na to, aby byl implementován na programovatelné kalkulačce.
V roce 1858 český matematik Václav Šimerka použil metodu podobnou SQUFOF .[1]
Algoritmus
Vstup: , celé číslo, které se má započítat, což nesmí být ani a prvočíslo ani a perfektní čtverec a malý multiplikátor .
Výstup: netriviální faktor .
Algoritmus:
Inicializovat
Opakovat
dokud je u některých dokonce perfektní čtverec .
Inicializovat
Opakovat
dokud
Pak pokud se nerovná a nerovná se , pak je netriviální faktor . Jinak zkuste jinou hodnotu .
Shanksova metoda má časovou složitost .
Stephen S. McMath vysvětluje podrobnější diskusi o matematice Shanksovy metody spolu s důkazem její správnosti.[2]
Příklad
Nechat
Jeďte vpřed | |||
---|---|---|---|
Tady je perfektní čtverec.
Reverzní cyklus | |||
---|---|---|---|
Tady .
, což je faktor .
Tím pádem,
Ukázkové implementace
Níže je uveden příklad funkce C pro provádění faktorizace SQUFOF na celé číslo bez znaménka, které není větší než 64 bitů, bez přetečení přechodných operací.[Citace je zapotřebí ]
#zahrnout <inttypes.h>#define nelems (x) (sizeof (x) / sizeof ((x) [0]))konst int násobitel[] = {1, 3, 5, 7, 11, 3*5, 3*7, 3*11, 5*7, 5*11, 7*11, 3*5*7, 3*5*11, 3*7*11, 5*7*11, 3*5*7*11};uint64_t SQUFOF( uint64_t N ){ uint64_t D, Po, P, Pprev, Q, Qprev, q, b, r, s; uint32_t L, B, i; s = (uint64_t)(sqrtl(N)+0.5); -li (s*s == N) vrátit se s; pro (int k = 0; k < nelems(násobitel) && N <= UINT64_MAX/násobitel[k]; k++) { D = násobitel[k]*N; Po = Pprev = P = sqrtl(D); Qprev = 1; Q = D - Po*Po; L = 2 * sqrtl( 2*s ); B = 3 * L; pro (i = 2 ; i < B ; i++) { b = (uint64_t)((Po + P)/Q); P = b*Q - P; q = Q; Q = Qprev + b*(Pprev - P); r = (uint64_t)(sqrtl(Q)+0.5); -li (!(i & 1) && r*r == Q) přestávka; Qprev = q; Pprev = P; }; -li (i >= B) pokračovat; b = (uint64_t)((Po - P)/r); Pprev = P = b*r + P; Qprev = r; Q = (D - Pprev*Pprev)/Qprev; i = 0; dělat { b = (uint64_t)((Po + P)/Q); Pprev = P; P = b*Q - P; q = Q; Q = Qprev + b*(Pprev - P); Qprev = q; i++; } zatímco (P != Pprev); r = gcd(N, Qprev); -li (r != 1 && r != N) vrátit se r; } vrátit se 0;}
Reference
- ^ Lemmermeyer, F. (2013). „Václav Šimerka: kvadratické formy a faktorizace“. LMS Journal of Computation and Mathematics. 16: 118–129. doi:10.1112 / S1461157013000065.
- ^ "Square Shanks 'Square Forms Factorization". CiteSeerX 10.1.1.107.9984. Citovat deník vyžaduje
| deník =
(Pomoc)
- D. A. Buell (1989). Binární kvadratické formy. Springer-Verlag. ISBN 0-387-97037-1.
- D. M. Bressoud (1989). Faktorizace a testování primality. Springer-Verlag. ISBN 0-387-97040-1.
- Riesel, Hans (1994). Prvočísla a počítačové metody pro faktorizaci (2. vyd.). Birkhauser. ISBN 0-8176-3743-5.
- Samuel S. Wagstaff, Jr. (2013). Radost z faktoringu. Providence, RI: American Mathematical Society. 163–168. ISBN 978-1-4704-1048-3.
externí odkazy
- Daniel Shanks: Analýza a zdokonalení metody faktorizace další frakce (přepsáno S. McMathem 2004)
- Daniel Shanks: Poznámky SQUFOF (přepsáno S. McMathem 2004)
- Stephen S. McMath: Paralelní celočíselná faktorizace pomocí kvadratických forem, 2005
- S. McMath, F. Crabbe, D. Joyner: Pokračující zlomky a paralelní SQUFOF, 2005
- Jason Gower, Samuel Wagstaff: Faktorizace čtvercového tvaru (Zveřejněno)
- Shanksův SQUFOF factoringový algoritmus
- java-math-library