¿Compruebe eficientemente si dos números son primos primarios (números primos relativos)?

¿Cuál es la forma más eficiente (“pythonic”) de probar / verificar si dos números son primos primarios (relativamente prime) en Python ?

Por el momento tengo este código:

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 

¿El código para verificar / probar si dos números son relativamente primos puede considerarse “Pythonic” o si hay alguna forma mejor?

La única sugerencia de mejora podría ser con su función gcd . Es decir, podría usar gcd que está definido en math (para Python 3.5 ) para boost la velocidad.

Definiendo coprime2 que usa la versión incorporada de gcd :

 from math import gcd as bltin_gcd def coprime2(a, b): return bltin_gcd(a, b) == 1 

Casi reduce la velocidad de ejecución a la mitad debido al hecho de que math.gcd se implementa en C ( vea math_gcd en 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 

Para Python <= 3.4 , puede usar fractions.gcd pero, como se indica en un comentario de @ user2357112, no está implementado en C En realidad, realmente no hay ningún incentivo para usarlo realmente, su implementación es exactamente igual a la suya.