{{{id=1| def pollard_pm1(N,B=0): if not B: B=ceil(sqrt(N)) a = Integers(N).random_element() b = a for ell in primes(B): q = 1 while q < N: q *= ell b = b^q d = gcd(b.lift()-1,N) if d == N: return 0 if d > 1: return d return 0 def random_unsafe_prime(bits): while true: a=randint(0,bits) b=randint(0,floor((bits-a)/log(3,2))) c=randint(0,floor((bits-a-floor(b*log(3,2)))/log(5,2))) d=floor((bits-a-floor(b*log(3,2))-floor(c*log(5,2)))/log(7,2)) p = 2^a*3^b*5^c*7^d+1 if is_prime(p): return p /// }}} {{{id=5| factor(random_unsafe_prime(500)-1) /// 2^166 * 3^152 * 5^37 * 7^3 }}} {{{id=2| p1=random_unsafe_prime(500) p2=random_prime(2^500,2^499) print p1,p2 time print pollard_pm1(p1*p2) /// 4914170138219337312763129025659942324571395707443434262754113983316284499573057205945536803074309022946558860993484794485843208389626167296000000000001 1502372478319849667842662388844675307190055917420021641356062402891154329644640734465578565732879594697319287113459020853626896806657678212714228751677 4914170138219337312763129025659942324571395707443434262754113983316284499573057205945536803074309022946558860993484794485843208389626167296000000000001 Time: CPU 0.02 s, Wall: 0.02 s }}} {{{id=6| time factor(p1*p2, verbose=4) # this could take a *very* long time /// WARNING: Output truncated! IFAC: cracking composite 7382913969441983992525588541623489823073874539750544223577885638455251673228165565592372095658051401533859524397866454580732448292371318770760453574996270016552870651818862907403626660509045814945630877973187658446614445792587816461463088974342122119093423988734940429371052553322700233604714228751677 IFAC: checking for pure square IFAC: checking for odd power IFAC: trying Pollard-Brent rho method Rho: searching small factor of 1000-bit integer Rho: using X^2+1 for up to 49152 rounds of 32 iterations Rho: time = 2198 ms, 24576 rounds Rho: fast forward phase (8192 rounds of 64)... Rho: time = 1011 ms, 32772 rounds, back to normal mode Rho: time = 596 ms, 40960 rounds Rho: time = 597 ms, Pollard-Brent giving up. IFAC: trying Shanks' SQUFOF, will fail silently if input is too large for it. IFAC: trying Lenstra-Montgomery ECM ECM: working on 64 curves at a time; initializing for up to 388 rounds... ECM: time = 0 ms ECM: dsn = 12, B1 = 1800, B2 = 198000, gss = 128*420 ECM: time = 2009 ms, B1 phase done, p = 1801, setting up for B2 ECM: time = 34 ms, entering B2 phase, p = 2017 ECM: time = 1236 ms ECM: dsn = 14, B1 = 2200, B2 = 242000, gss = 128*420 ECM: time = 2391 ms, B1 phase done, p = 2203, setting up for B2 ECM: time = 34 ms, entering B2 phase, p = 2413 ECM: time = 1457 ms ECM: dsn = 16, B1 = 2700, B2 = 297000, gss = 256*420 ECM: time = 2893 ms, B1 phase done, p = 2707, setting up for B2 ECM: time = 35 ms, entering B2 phase, p = 2917 ECM: time = 1767 ms ECM: dsn = 18, B1 = 3250, B2 = 357500, gss = 256*420 ECM: time = 3398 ms, B1 phase done, p = 3251, setting up for B2 ECM: time = 35 ms, entering B2 phase, p = 3461 ECM: time = 2064 ms ECM: dsn = 20, B1 = 4000, B2 = 440000, gss = 256*420 ECM: time = 4171 ms, B1 phase done, p = 4001, setting up for B2 ECM: time = 35 ms, entering B2 phase, p = 4211 ECM: time = 2485 ms ECM: dsn = 22, B1 = 4850, B2 = 533500, gss = 256*420 ECM: time = 4981 ms, B1 phase done, p = 4861, setting up for B2 ECM: time = 36 ms, entering B2 phase, p = 5077 ECM: time = 2989 ms ECM: dsn = 24, B1 = 5800, B2 = 638000, gss = 256*420 ECM: time = 5890 ms, B1 phase done, p = 5801, setting up for B2 ECM: time = 35 ms, entering B2 phase, p = 6011 ECM: time = 3578 ms ECM: dsn = 26, B1 = 7100, B2 = 781000, gss = 256*420 ECM: time = 7152 ms, B1 phase done, p = 7103, setting up for B2 ECM: time = 37 ms, entering B2 phase, p = 7313 ECM: time = 4400 ms ECM: dsn = 28, B1 = 8700, B2 = 957000, gss = 256*420 ECM: time = 8643 ms, B1 phase done, p = 8707, setting up for B2 ECM: time = 36 ms, entering B2 phase, p = 8921 ECM: time = 5399 ms ECM: dsn = 30, B1 = 10600, B2 = 1166000, gss = 512*420 ECM: time = 10456 ms, B1 phase done, p = 10601, setting up for B2 ECM: time = 37 ms, entering B2 phase, p = 10813 ECM: time = 6593 ms ECM: dsn = 32, B1 = 12900, B2 = 1419000, gss = 512*420 ECM: time = 12605 ms, B1 phase done, p = 12907, setting up for B2 ... ECM: time = 7992 ms ECM: dsn = 34, B1 = 15700, B2 = 1727000, gss = 512*420 ECM: time = 15279 ms, B1 phase done, p = 15727, setting up for B2 ECM: time = 37 ms, entering B2 phase, p = 15937 ECM: time = 9680 ms ECM: dsn = 36, B1 = 19000, B2 = 2090000, gss = 512*420 ECM: time = 18231 ms, B1 phase done, p = 19001, setting up for B2 ECM: time = 40 ms, entering B2 phase, p = 19217 ECM: time = 11657 ms ECM: dsn = 38, B1 = 23200, B2 = 2552000, gss = 512*420 ECM: time = 22242 ms, B1 phase done, p = 23201, setting up for B2 ECM: time = 38 ms, entering B2 phase, p = 23411 ECM: time = 14157 ms ECM: dsn = 40, B1 = 28000, B2 = 3080000, gss = 512*420 ECM: time = 26669 ms, B1 phase done, p = 28001, setting up for B2 ECM: time = 38 ms, entering B2 phase, p = 28223 ECM: time = 16992 ms ECM: dsn = 42, B1 = 34500, B2 = 3795000, gss = 512*420 ECM: time = 32707 ms, B1 phase done, p = 34501, setting up for B2 ECM: time = 38 ms, entering B2 phase, p = 34717 ECM: time = 20772 ms ECM: dsn = 44, B1 = 43000, B2 = 4730000, gss = 1024*420 ECM: time = 40660 ms, B1 phase done, p = 43003, setting up for B2 ECM: time = 38 ms, entering B2 phase, p = 43219 ECM: time = 25744 ms ECM: dsn = 46, B1 = 53800, B2 = 5918000, gss = 1024*420 ECM: time = 50559 ms, B1 phase done, p = 53813, setting up for B2 ECM: time = 39 ms, entering B2 phase, p = 54023 ECM: time = 31914 ms ECM: dsn = 48, B1 = 67750, B2 = 7452500, gss = 1024*420 ECM: time = 63462 ms, B1 phase done, p = 67751, setting up for B2 ECM: time = 39 ms, entering B2 phase, p = 67961 ECM: time = 39813 ms ECM: dsn = 50, B1 = 85300, B2 = 9383000, gss = 1024*420 ECM: time = 79610 ms, B1 phase done, p = 85303, setting up for B2 ECM: time = 39 ms, entering B2 phase, p = 85517 ECM: time = 49695 ms ECM: dsn = 52, B1 = 107400, B2 = 11814000, gss = 1024*420 ECM: time = 99948 ms, B1 phase done, p = 107441, setting up for B2 ECM: time = 40 ms, entering B2 phase, p = 107657 ECM: time = 62026 ms ECM: dsn = 54, B1 = 135400, B2 = 14894000, gss = 1024*420 ECM: time = 125553 ms, B1 phase done, p = 135403, setting up for B2 ECM: time = 39 ms, entering B2 phase, p = 135617 ECM: time = 77534 ms ECM: dsn = 56, B1 = 170800, B2 = 18788000, gss = 1024*420 ECM: time = 157814 ms, B1 phase done, p = 170801, setting up for B2 ECM: time = 39 ms, entering B2 phase, p = 171013 ECM: time = 97052 ms ECM: dsn = 58, B1 = 215400, B2 = 23694000, gss = 1024*420 ECM: time = 198626 ms, B1 phase done, p = 215417, setting up for B2 ECM: time = 39 ms, entering B2 phase, p = 215651 ECM: time = 121396 ms ECM: dsn = 60, B1 = 271400, B2 = 29854000, gss = 1024*420 ECM: time = 249676 ms, B1 phase done, p = 271409, setting up for B2 ECM: time = 39 ms, entering B2 phase, p = 271637 ECM: time = 151808 ms ECM: dsn = 62, B1 = 341500, B2 = 37565000, gss = 1024*420 ECM: time = 313242 ms, B1 phase done, p = 341501, setting up for B2 ECM: time = 41 ms, entering B2 phase, p = 341713 }}} {{{id=7| /// }}}