模重复平方过程算法

2019-04-13 12:26发布

# -*- coding:UTF-8 -*- # 模重复平方过程实现算法 def tenToBin(num): binary = [] while num > 0: binary.append(num%2) num = int(num/2) #binary.insert(0,num%2) # 向第0个元素前面插入一个数据 #binary.insert(-1,num%2) # 向最后一个元素前面插入一个数据 return binary def modularRepeatSquare(b,n,m): #求b^n%m binary = tenToBin(n) temp = 1 # 记录2的次方 result = 1 for i in binary: if i == 1: s = (b**temp)%m result = (result*s)%m temp = temp * 2 return result print modularRepeatSquare(7,22,31)