计数步骤python中的欧几里德算法程序

时间:2015-02-12 23:19:59

标签: python algorithm

我需要一个程序来计算Euclid算法在Python中查找gcd(a,b)所需的步数。该计划可能基于Lam'e定理。 到目前为止,我刚刚得到了简单的Euclidean算法程序:

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

我不知道如何编写我需要的程序。

1 个答案:

答案 0 :(得分:0)

将计数器整数对象count初始化为零,并在每次循环循环时递增它:

def gcd(a, b):
    count = 0
    while b:
        a, b = b, a%b
        count += 1
    print(count)
    return a

Lamé定理表示步数count永远不会超过b中数字位数的5倍(数字越小)。要验证这一点:

import math
def gcd(a, b):
    ndigits = int(math.log10(b)) + 1
    count = 0
    while b:
        a, b = b, a%b
        count += 1
    print(count)
    print("Lame's theorem holds?", count <= 5*ndigits)
    return a