Advertisement
phillip1882

modexp

Oct 3rd, 2012
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.05 KB | None | 0 0
  1. def GCD(a,b):
  2.    if a == 0:
  3.       return b
  4.    if b == 0:
  5.       return a
  6.    if a < b:
  7.       return GCD(a,b%a)
  8.    else:
  9.       return GCD(a%b,b)
  10.  
  11. def ord(n,r):
  12.    val = GCD(n,r)
  13.    if val != 1:
  14.       print("error: not co-prime.", val)
  15.       return 0
  16.    value = n
  17.    k = 1
  18.    while value != 1:
  19.       value *= n
  20.       value = value%r      
  21.       k += 1
  22.    return k
  23.  
  24. def multexp(terms, exp, modpoly, reduce):
  25.     prev = terms[:]
  26.     while exp > 1:
  27.        axillary = [0]*(len(prev)+len(terms)-1)
  28.        for i in range(0, len(terms)):
  29.           for j in range(0, len(prev)):
  30.              axillary[i+j] += terms[i]*prev[j]
  31.        print(axillary)
  32.        for i in range(0,len(axillary)-len(modpoly)+1):
  33.           temp = axillary[i]
  34.           for j in range(0,len(modpoly)):
  35.              axillary[j+i] -= modpoly[j]*temp
  36.        print(axillary)
  37.        for i in range(0,len(axillary)):
  38.           axillary[i] = axillary[i]%reduce
  39.        while axillary[0] == 0:
  40.           axillary.pop(0)
  41.        prev = axillary[:]
  42.        exp -= 1
  43.     return prev
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement