for q in range(40): q = Integer(q) if q < 2: continue if not q.is_prime_power(): continue if q.is_power_of(2): continue Fq. = GF(q) def chi(a): return a^((q-1)//2) for A in Fq: for B in Fq: if A*B*(A^2-4*B) == 0: continue for u in Fq: if u.is_square(): continue R = [r for r in Fq if 1+u*r^2!=0 and A^2*u*r^2!=B*(1+u*r^2)^2] for r in R: if r != 0: print 1+u*r^2 != 0 v = -A/(1+u*r^2) eps = chi(v^3+A*v^2+B*v) x = eps*v-(1-eps)*A/2 print (x^3+A*x^2+B*x).is_square() y = -eps*sqrt(x^3+A*x^2+B*x) print v != 0 print eps != 0 print x != 0 print y != 0 print y^2 == x^3+A*x^2+B*x if q % 4 == 1: if not (A^2-4*B).is_square(): print len(R) == len(Fq)