J'essaie d'obtenir un moyen rapide de déterminer si un nombre est premier en utilisant Python.Le moyen le plus rapide de tester si un nombre est premier avec Python
J'ai deux fonctions pour le faire. Les deux retournent soit Vrai ou Faux.
Fonction isPrime1 est très rapide à renvoyer False est un nombre n'est pas un nombre premier. Par exemple avec un grand nombre. Mais il est lent à tester True pour les grands nombres premiers.
Fonction isPrime2 est plus rapide en retournant True pour les nombres premiers. Mais si un nombre est grand et n'est pas premier, cela prend trop de temps pour retourner une valeur. La première fonction fonctionne mieux avec ça.
Comment puis-je trouver une solution qui pourrait rapidement retourner False pour un grand nombre qui n'est pas premier et fonctionnerait rapidement avec un grand nombre qui est premier?
`
def isPrime1(number): #Works well with big numbers that are not prime
state = True
if number <= 0:
state = False
return state
else:
for i in range(2,number):
if number % i == 0:
state = False
break
return state
def isPrime2(number): #Works well with big numbers that are prime
d = 2
while d*d <= number:
while (number % d) == 0:
number //= d
d += 1
if number > 1:
return True
else:
return False`
https://en.wikipedia.org/wiki/Primality_test – Ryan
Utilisez un filtre Bloom pré-initialisé avec une liste de nombres premiers jusqu'à la plus grande que vous devez prendre en compte. –
http://compoasso.free.fr/primelistweb/page/prime/accueil_fr.php – alvas