最有效(" pythonic")测试/检查 Python 中的两个数字 co-primes (相对素数)的方法是什么?
目前我有这段代码:
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"还是有更好的方法?
答案 0 :(得分:11)
唯一的改进建议可能是您的功能gcd
。也就是说,您可以使用math
(针对Python 3.5
)中定义的gcd
来提高速度。
定义使用coprime2
内置版本的gcd
:
from math import gcd as bltin_gcd
def coprime2(a, b):
return bltin_gcd(a, b) == 1
由于在math.gcd
(see math_gcd
in mathmodule.c
)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
这一事实,您几乎将执行速度降低了一半:
<= 3.4
对于Python fractions.gcd
,您可以使用C
,但正如@ user2357112的评论中所述,它未在MissingUsernameError: No username was given
中实现。实际上,真的没有动力去实际使用它,its implementation is exactly the same as yours.