Utiliser ==
pour vérifier l'égalité de nombres:
for numberToCheck in range(2,10000):
divider = 2
while numberToCheck > divider:
if numberToCheck % divider is 0:
break
else:
divider += 1
if numberToCheck == divider:
print(numberToCheck, "is a prime number.")
Is
opérateur est utilisé pour vérifier l' id
de deux objets en ==
opérateur de vérifier leurs valeurs.
Python implémente un Tableau d'entiers pour des valeurs entre -5
de 256
, et lorsque vous créez un objet int dans cette gamme, vous obtenez une référence à la matrice de mise en œuvre. C'est pourquoi, id
de tous les nombres entiers les objets de cette gamme est le même, mais c'est différent pour les entiers objets en dehors de cette plage, comme on le voit ci-dessous:
>>> a = -6
>>> b = -6
>>> a is b # a and b has different id
False
>>> a = -5
>>> b = -5
>>> a is b # a and b has same id
True
>>> a = 256
>>> b = 256
>>> a is b # a and b has same id
True
>>> a = 257
>>> b = 257
>>> a is b # a and b has different id
False
Et c'est la raison, votre programme imprime les nombres premiers jusqu' 251
, mais pas le prochain premier 257
et par la suite, cependant, votre programme fonctionne jusqu' numberToCheck
atteint 9999
.
Aussi, vous pouvez envisager un algorithme plus rapide pour générer des nombres premiers, comme le Crible d'Eratosthène.
Fondamentalement, vous devez vérifier la divisibilité de l' numberToCheck
avec tous les nombres premiers entre 2
et ( déjà trouvé le premier ou la racine carrée de l' numberToCheck
, s'il est moins élevé ).