Efficace de vérifier si deux nombres sont co-premiers (relativement premiers)?
Ce qui est le plus efficace ("pythonic") de façon à tester/vérifier si deux nombres sont co-nombres premiers (premier) dans Python.
Pour le moment j'ai ce code:
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
Peuvent le code pour vérifier/tester si deux nombres sont premiers entre être considéré comme "Pythonic" ou il ya une meilleure façon?
Semble assez bon.
vous pouvez utiliser
Remarque:
Si c'est code de travail que vous pensez pourrait être amélioré, voir la Revue de Code.
vous pouvez utiliser
math.gcd
bien sûr, qui est une batterie incluse et doit être plus performant.Remarque:
math.gcd
est nouveau dans Python3.5, a été fractions.gcd
avant.Si c'est code de travail que vous pensez pourrait être amélioré, voir la Revue de Code.
OriginalL'auteur Erba Aitbayev | 2016-09-24
Vous devez vous connecter pour publier un commentaire.
La seule suggestion d'amélioration pourrait être avec votre fonction
gcd
. À savoir, vous pouvez utiliserpgcd
qui est défini dansmath
(pour Python3.5
) pour un boost de vitesse.Définition
coprime2
qui utilise la version intégrée degcd
:Vous presque coupé la vitesse d'exécution de moitié en raison du fait que
math.gcd
est mis en œuvre dansC
(reportez-vous àmath_gcd
mathmodule.c
):Pour Python
<= 3.4
vous pouvez utiliserfractions.gcd
mais, comme indiqué dans un commentaire de @user2357112, il n'est pas mis en œuvre dansC
. En fait, il n'y a vraiment aucun intérêt à l'utiliser effectivement, sa mise en œuvre est exactement la même que la vôtre.fractions.gcd
a été écrit en Python à la place de C.OriginalL'auteur Jim Fasarakis Hilliard