Lorsque j'exécute ce code, même si je compte juste pour le 10e nombre premier (au lieu de 1000), je reçois une sortie asymétrique - tous les titres "non premiers" pour ma variable is_composite, mon test_num me donne des nombres premiers et composites, et mon prime_count est éteintRecherche du nième nombre premier en utilisant Python
Certaines des réponses que les développeurs ont partagé utilisent des fonctions et l'importation de maths - c'est quelque chose que nous n'avons pas encore couvert. Je n'essaie pas d'obtenir la réponse la plus efficace; J'essaye juste d'écrire du code Python réalisable 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
Que * spécifiquement * ne fonctionne pas? – eldarerathis
Rien ne revient/passe – zkidd
Votre algorithme est lent, affinez-le en utilisant la théorie des nombres. Plus précisément, vérifiez uniquement les nombres premiers inférieurs ou égaux à la racine carrée du nombre actuel. – alternative