import numpy import gmpy2 from collections import defaultdict p=13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084171 g=11717829880366207009516117596335367088558084999998952205599979459063929499736583746670572176471460312928594829675428279466566527115212748467589894601965568 h=3239475104050450443565264378728065788649097520952449527834792452971981976143292558073856937958553180532878928001494706097394108577585732452307673444020333 B=numpy.powmod(2,20,p) # hash_table=[None] * (B+1) hash_table=defaultdict(int) i=0; for i in range(0,B+1): print i l= numpy.powmod(g,i,p) l=gmpy2.invert(l,p) z=(h*l)%p # print l; hash_table[z]=i; # print z # print hash_table[i] m=numpy.powmod(g,B,p) # for i in range(0,B+1):
import gmpy2 import math from collections import defaultdict from gmpy2 import mpz gmpy2.get_context().precision=10000 N = 179769313486231590772930519078902473361797697894230657273430081157732675805505620686985379449212982959585501387537164015710139858647833778606925583497541085196591615128057575940752635007475935288710823649949940771895617054361149474865046711015101563940680527540071584560878577663743040086340742855278549092581 N=179769313486231590772930519078902473361797697894230657273430081157732675805505620686985379449212982959585501387537164015710139858647833778606925583497541085196591615128057575940752635007475935288710823649949940771895617054361149474865046711015101563940680527540071584560878577663743040086340742855278549092581 N=648455842808071669662824265346772278726343720706976263060439070378797308618081116462714015276061417569195587321840254520655424906719892428844841839353281972988531310511738648965962582821502504990264452100885281673303711142296421027840289307657458645233683357077834689715838646088239640236866252211790085787877 N=720062263747350425279564435525583738338084451473999841826653057981916355690188337790423408664187663938485175264994017897083524079135686877441155132015188279331812309091996246361896836573643119174094961348524639707885238799396839230364676670221627018353299443241192173812729276147530748597302192751375739387929 N= mpz(N)*6 A=gmpy2.ceil(gmpy2.sqrt(gmpy2.mpz(N))) B=numpy.powmod(2,20,N) for i in range(0,B+1): print i #x=mpz(A*A) -N A=mpz(A) z=mpz(A)*mpz(A) #print mpz(z)+1 y=mpz(z)-mpz(N) x=gmpy2.sqrt(gmpy2.mpz(y)) p=mpz(A)-mpz(x) q=mpz(A)+mpz(x) #print p #print mpz(p) if mpz(mpz(p)*mpz(q)) == mpz(N):
import numpy import gmpy2 import math from collections import defaultdict from gmpy2 import mpz gmpy2.get_context().precision=100000 N = 179769313486231590772930519078902473361797697894230657273430081157732675805505620686985379449212982959585501387537164015710139858647833778606925583497541085196591615128057575940752635007475935288710823649949940771895617054361149474865046711015101563940680527540071584560878577663743040086340742855278549092581 N=179769313486231590772930519078902473361797697894230657273430081157732675805505620686985379449212982959585501387537164015710139858647833778606925583497541085196591615128057575940752635007475935288710823649949940771895617054361149474865046711015101563940680527540071584560878577663743040086340742855278549092581 #N=648455842808071669662824265346772278726343720706976263060439070378797308618081116462714015276061417569195587321840254520655424906719892428844841839353281972988531310511738648965962582821502504990264452100885281673303711142296421027840289307657458645233683357077834689715838646088239640236866252211790085787877 A=gmpy2.ceil(gmpy2.sqrt(gmpy2.mpz(N))) B=numpy.powmod(2,20,N) for i in range(0,B+1): #print i #x=mpz(A*A) -N A=mpz(A) z=mpz(A)*mpz(A) #print mpz(z)+1 y=mpz(z)-mpz(N) x=gmpy2.sqrt(gmpy2.mpz(y)) p=mpz(A)-mpz(x) q=mpz(A)+mpz(x) #print p #print mpz(p) if mpz(mpz(p)*mpz(q)) == mpz(N): break