Python math.gcd()与欧几里德算法

Python math.gcd()与欧几里德算法,python,python-3.x,Python,Python 3.x,导入mathlibrary或 def computegcd(x,y): while(y): x,y = y,x%y return x 您可以使用来自己检查:) 运行以下命令: 从timeit导入timeit 输入数学 随机输入 x=random.randint(9**6,9**7) y=random.randint(5*5,5*6) def with_math(): 返回数学.gcd(x,y) 带有欧几里得()的def: xx=x yy=y 而yy: xx,yy

导入
math
library或

def computegcd(x,y):
    while(y):
        x,y = y,x%y
    return x
您可以使用来自己检查:)

运行以下命令:

从timeit导入timeit
输入数学
随机输入
x=random.randint(9**6,9**7)
y=random.randint(5*5,5*6)
def with_math():
返回数学.gcd(x,y)
带有欧几里得()的def:
xx=x
yy=y
而yy:
xx,yy=yy,xx%yy
返回xx
打印(使用_math()==使用_euclid())#确保结果相同
打印(timeit(带数学,数字=10**7))
打印(timeit(带欧几里德,数字=10**7))
在我当前的笔记本电脑上,它输出:

True
3.021651975000168
7.143860205000237

如果
while(y):x,y=y,x%y返回x
是找到GCD的最有效的方法,为什么
math.GCD()
不能这样实现呢?注意:时间结果可能会有所不同,但大多数运行我得到了一个大约2x的比率,支持
math.GCD()
你知道在哪里可以得到math.GCD()背后的确切代码或算法吗函数?@crazysa在CPython的repo
mathmodule.c
:实际上真正的代码在这里: