Example #1
0
k = 23
#mod = 10**9

T = np.zeros(((k+1)*k,(k+1)*k)).astype(np.int64)
init = np.zeros((k+1)*k).astype(np.int64)
init[0] = 1

for d in xrange(10):
  for i in xrange((k+1)*k):
    s = i/k #sum
    m = i%k #mod-state
    m_new = ((10*m) + d) % k
    if s + d <= k:
      T[k*(s+d) + m_new,i] = 1

r1 = pe.matrix_mod_exp(n,T,init,2**9)[k*k]
r2 = pe.matrix_mod_exp(n,T,init,5**9)[k*k]

print "mod 2^9: " + str(r1) + " mod 5^9 " + str(r2) 











Example #2
0
def G(n):
  global T,init
  v = matrix_mod_exp(n-1,T,init,mod)
  return v[-1]
def FibboEval(n,x,mod):
  I = np.array([1,x,0],dtype=np.int64)
  A = np.array([[1,0,0],[x,x,x*x],[0,1,0]],dtype=np.int64)
  res = matrix_mod_exp(n-1,A,I,mod)
  return res[1]
Example #4
0
from proj_euler import matrix_mod_exp,MillerRabin
import numpy as np
from CR_NEWTON_LAGRANGE import Lagrange_cr

I = np.array([1,0],dtype=np.int64)
T = np.array([[1,1],[1,0]],dtype=np.int64)

start = 10**14
mod = 1234567891011
m1=1957137
m2=630803
if not m2*m1==mod:
 raise Exception("Incorrect modulus factorization.")

res1=matrix_mod_exp(start,T,I,m1)
res2=matrix_mod_exp(start,T,I,m2)

prev = Lagrange_cr((int(res1[1]),int(res2[1])),(m1,m2))
curr = Lagrange_cr((int(res1[0]),int(res2[0])),(m1,m2))

n = 10**5
count = 0
i = start+1
s = 0
while count < n:
 if MillerRabin(i):
   s += curr
   if s > mod:
    s -= mod
   count += 1
 curr,prev = curr+prev,curr