python中的Rho分解方法

时间:2014-03-11 21:43:10

标签: python algorithm python-2.7

我在python中实现Rho的分解方法时遇到了麻烦。任何帮助,将不胜感激。这是我的尝试和我从书中收到的指示。

def gcd(a,b):
    while b !=0:
        (a,b)=(b,a%b)
    return a

def algb(N):
    x=5
    y=2
    k=1
    l=1
    n=N
    g=gcd(y-x,n)
    if g==1:
        k=k-1
        if k==0:
            y=x
            l=2*l
            k=l
        x=(x**2+1) % n
    elif g==n:
        print "alg fails"
    else:
        n=n/g
        x=x % n
        y=y % n
        return g
    x=(x**2+1) % n
    return g,x,y,k,l

print algb(25852)

以下是本书所要做的事情

B1:[initialize] set x <- 5, x' <- 2, k <- 1, l <- 1, n <- N

B2:[test primality] if n is prime, output n; the algorithm terminates

B3:[Factor found?] set g <- gcd(x'-x,n).

If g=1, go on to step B4; otherwise output g.

Now if g=n, the algorithm terminates (and it has failed because we know that n isnt prime).
Otherwise set n <- n/g, x <- x mod n, x' <- x' mod n, and return to step B2.

B4:[advance] set k <- k-1. if k=0, set x' <- x, l <- 2l, k <-l. Set x <- (x<sup>2</sup> + 1) mod n and return to B3

任何有关如何使这项工作的帮助或建议都会很棒 print algb(25852)应该给我23,但事实并非如此。 我的教授也告诉我们省略B2,这就是为什么它没有实现。请帮助。这也是来自knuth,v2,第386页第4.5.4节的计算机编程艺术。

0 个答案:

没有答案