Maison >développement back-end >Tutoriel Python >Pourquoi mon générateur de nombres premiers Python imprime-t-il uniquement la variable count ?

Pourquoi mon générateur de nombres premiers Python imprime-t-il uniquement la variable count ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-10 21:56:02857parcourir

Why is my Python prime number generator only printing the count variable?

Dépannage d'un générateur de nombres premiers simples en Python

Votre code est conçu pour générer des nombres premiers, mais il rencontre des problèmes et n'imprime que le décompte variable. Explorons pourquoi et proposons une solution.

Le code suivant est identifié comme présentant des problèmes :

import math

def main():
    count = 3
    one = 1
    while one == 1:
        for x in range(2, int(math.sqrt(count) + 1)):
            if count % x == 0:
                continue
            if count % x != 0:
                print(count)

        count += 1

Il y a deux problèmes principaux :

  1. Vous avez tort imprimer le nombre comme premier lorsqu'il est divisible par « x ». Vous devriez vérifier la divisibilité au lieu de l'inverse.
  2. Au lieu de rompre la boucle interne lorsque le nombre devient divisible par « x », vous passez à l'itération suivante, ce qui conduira à une détermination première inexacte.

Voici une version révisée du code avec ces problèmes résolus :

import math

def main():
    count = 3

    while True:
        is_prime = True
    
        for x in range(2, int(math.sqrt(count) + 1)):
            if count % x == 0:
                is_prime = False
                break

        if is_prime:
            print(count)
    
        count += 1

Ce code mis à jour corrige le logique pour garantir que seuls les nombres premiers sont imprimés. Il vérifie la divisibilité à l'aide de l'indicateur « is_prime » et rompt la boucle interne si le nombre devient divisible par n'importe quelle valeur de « x ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn