Trouver le n-ième nombre premier à l'aide de Python

Lorsque j'exécute ce code, même pour le compte de la 10e premier numéro (au lieu de 1000), je reçois un biaisée/cric de sortie--tous les "non prime" sur les titres pour mon is_composite variable, mon test_num me donne des premiers et des nombres composés, et mon prime_count est éteint

Certaines des réponses que les développeurs ont partagé utiliser les fonctions et les mathématiques à l'importation--c'est quelque chose que nous n'avons pas encore couverts. Je ne suis pas en essayant d'obtenir le plus efficace de répondre; je suis juste essayer d'écrire réalisable code python pour comprendre les bases de la boucle.


  # test a prime by diving number by previous sequence of number(s) (% == 0).  Do this by
  # counting up from 1 all the way to 1000.

test_num = 2 #these are the numbers that are being tested for primality
is_composite = 'not prime' # will be counted by prime_count
prime_count = 0 #count the number of primes


while (prime_count<10): #counts number primes and make sures that loop stops after the 1000th prime (here: I am just running it to the tenth for quick testing)


 test_num = test_num + 1   # starts with two, tested for primality and counted if so
 x = test_num - 1  #denominator for prime equation

 while (x>2):   
  if test_num%(x) == 0:
   is_composite = 'not prime'
  else: 
   prime_count = prime_count + 1 
  x = x - 1 


  print is_composite
  print test_num
  print prime_count 
Ce précisément ne fonctionne pas?
Votre algorithme est lente, l'affiner à l'aide de la théorie des nombres. Plus précisément, uniquement de contre-vérifier les nombres premiers inférieur ou égal à la racine carrée du nombre actuel.
Hors sujet: quelques commentaires dans votre code sont corrects, d'autres sont évidents: while x > 2: # runs while x is greater than 2 est évident. En général: commentaire le pourquoi, pas le ce que.
Vous et moi avons des idées différentes pour "gros" nombres premiers. Pour moi, un grand nombre premier est assez grande pour que tous les nombres premiers de moins que le candidat de nombre premier occuperait plus de mémoire (espace sur le disque dur?) que ce qui est disponible sur la machine (groupe?) test le candidat premier de primalité. Pour moi, le premier environ 2^40 nombres premiers sont petits
le problème n'est pas la cause des devoirs à la maison, mais avec votre approche: si vous a venir avec cette question et a dit "j'ai fait ceci et cela, et j'ai ce problème ici" ce serait de montrer que vous étiez vraiment perplexe après avoir fait l'effort. À venir et de dire "j'ai mal" avec un code qui, au premier abord, n'ont même pas une instruction print, montre un manque d'effort.

OriginalL'auteur zkidd | 2010-10-07