有效检查两个数字是否为互质数(相对质数)?
什么是测试/检查Python中两个数字是否互质(相对质数)的最有效(“ Pythonic”)方式?
目前,我有以下代码:
def gcd(a, b): while b != 0:
a, b = b, a % b
return a
def coprime(a, b):
return gcd(a, b) == 1
print(coprime(14,15)) #Should be true
print(coprime(14,28)) #Should be false
是否可以将用于检查/测试两个数字是否是素数的代码视为“ Pythonic”,或者有更好的方法?
回答:
改善的唯一建议可能是您的功能gcd
。也就是说,您可以使用(对于Python
)中gcd
定义的速度提高速度。math``3.5
定义coprime2
使用以下内置版本gcd
:
from math import gcd as bltin_gcddef coprime2(a, b):
return bltin_gcd(a, b) == 1
你几乎减少执行速度的一半归因于这样的事实math.gcd
在实现C
(见math_gcd
中mathmodule.c
):
%timeit coprime(14, 15)1000000 loops, best of 3: 907 ns per loop
%timeit coprime2(14, 15)
1000000 loops, best of 3: 486 ns per loop
对于Python,<= 3.4
您可以使用,fractions.gcd
但正如@ user2357112的注释中所述,它没有在中实现C
。实际上,
实际上没有任何动机去使用它,
它的实现与您的实现完全相同。
以上是 有效检查两个数字是否为互质数(相对质数)? 的全部内容, 来源链接: utcz.com/qa/431431.html