方总是指数法

时间:2018-06-13 07:47:32

标签: python exponentiation

除了square-and-multiply方法之外,还有这个方法square-and-multiply-always,我试图在python中实现它。我的问题是在搜索期间我找到了一个伪代码,here并且我在python中实现了它,但与pow函数相比它没有产生正确的结果。
伪代码可以在上面的链接中找到,也可以在此screenshot中找到。

我的实施是

def square_and_multiply_always(base, exp, mod):
    R0=1
    R1 = base
    c = '{0:b}'.format(exp)
    i=len(c)
    t=0
    while i>=0:
        if(t==0):
            Rt=R0
        elif(t==1):
            Rt=R1
        else:
             print("t != 0 or 1")
        R0=(R0*Rt)%mod
        a=int(c[i-1])
        t=(t^a)
        i=i-1+t
    return R0

1 个答案:

答案 0 :(得分:0)

我设法找到了我的错误,所以这里是一个适当的代码,用于将来的搜索结果

def square_and_multiply_always(base, exp, mod):
    R0=1
    R1 = base
    c = '{0:b}'.format(exp)
    i=len(c)-1
    t=0
    c=c[::-1]
    while(i>=0):
        if(t==0):
            Rt=R0
        elif(t==1):
            Rt=R1
        else:
            print("t != 0 or 1")
        R0=(R0*Rt)%mod
        d=int(c[i])
        t=(t^d)
        i=i-1+t
    return R0