代码1
def dfs(a, b, mod):
if b == 1:
return a % mod
if b % 2 == 0:
return (dfs(a, b // 2, mod) ** 2) % mod
else:
return ((dfs(a, (b - 1) // 2, mod) ** 2) * a) % mod
代码2
def fun2(a,n,mod):
res = 1
while n:
if n & 1:
res = res*a%mod
a = a*a%mod
n >>= 1
return res
对比
使a=7,mod = 275 ,对指数进行测试,4位数到12位数各抽取1万个数作为指数进行测试,结果如下。
代码2明显好于代码1,耗时更少。