p=nth_prime(362)
print p
2441
myfact=factor(p-1)
print(myfact)
2^3 * 5 * 61
c=mod(1,p)
C=Set([])
for fact in myfact:
    q,a=fact
    b=a-1
    h=Integers(p)[x](x^(q^a)-1)
    hh=Integers(p)[x](x^(q^b)-1)
    maxl = Set(h.roots(multiplicities=False))
    minl = Set(hh.roots(multiplicities=False))
    candidates = maxl.difference(minl)
    u = candidates[0]
    print hh,h,maxl,minl,u
    c = c*u
    C=C.union(Set([u]))

x^4 + 2440 x^8 + 2440 {672, 1, 1122, 1319, 2440, 1769, 2156, 285} {2440, 1769, 672, 1} 1122
x + 2440 x^5 + 2440 {1, 583, 1478, 590, 2230} {1} 1478
x + 2440 x^61 + 2440 {1280, 1024, 1283, 1029, 1, 1547, 268, 1421, 1166, 1679, 1040, 1002, 2067, 1300, 534, 26, 261, 32, 676, 2086, 1832, 1195, 684, 2290, 50, 40, 2104, 697, 59, 956, 189, 446, 2214, 832, 1035, 331, 2380, 845, 2157, 2127, 2000, 1600, 855, 1625, 335, 2360, 1888, 739, 1253, 103, 828, 1642, 1387, 237, 1904, 753, 1778, 489, 509, 1534, 2344} {1} 1280
print C,c
print multiplicative_order(c)
{1280, 1122, 1478} 2141
2440
# new poly
p,a=11,2
thelifts = [
      [a+t*p,multiplicative_order(mod(a+t*p,p^2))] 
      for t in range(p)] 
thelifts