我需要一个程序来计算Euclid算法在Python中查找gcd(a,b)所需的步数。该计划可能基于Lam'e定理。 到目前为止,我刚刚得到了简单的Euclidean算法程序:
def gcd(a, b):
while b:
a, b = b, a%b
return a
我不知道如何编写我需要的程序。
答案 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