0
votes

Retourner si un nombre est élevé ou non comme un booléen en python

Pour le contexte, j'essaie de résoudre Projet Euler Problème 3 Utilisation de Python:

Quel est le principal facteur premier du nombre 600851475143?

Comme premier pas à cela, j'essaie d'écrire une fonction qui retourne si un nombre est élevé ou non comme un booléen. J'ai fait une première tentative et j'ai vérifié comment cela a été écrit précédemment. J'ai fini par le code suivant: xxx

Pour une raison quelconque, le code ci-dessus ne fonctionne pas parfaitement. Par exemple, isprime (99) retournerait vrai.

S'il vous plaît, pouvez-vous m'aider à comprendre pourquoi cela ne fonctionne pas? J'essaie d'éviter de simplement copier et coller le code de quelqu'un d'autre, car je veux comprendre exactement ce qui se passe ici.

Pour moi, il semble que le problème est avec le dernier sinon déclaration. Je dis cela parce que la logique se lit "dans l'événement que x% i == 0 , ce numéro n'est pas prime" mais cela ne dit pas explicitement quoi faire dans le cas où aucun x% i itérations == 0 .

Toute aide sur ce sujet serait appréciée! Je ne cherche pas nécessairement le moyen le plus propre et le plus pur de cela, mais plus vous essayez simplement d'abord de faire ce code.


2 commentaires

La ligne i = i + 1 n'est jamais atteinte.


retour extrémités fonction à la fois et code après retour n'est jamais exécuté - i = i + 1


3 Réponses :


1
votes

Essayez ceci:

def isprime(x):
    limit = x**0.5
    i = 2
    if x <= 2:
        return False

    while i <= limit:
        if x%i == 0:          
            return False      
        i = i + 1
    return True 


1 commentaires

Merci tout le monde, a dégagé des problèmes concernant l'indentation et l'utilisation d'autres!



1
votes

Vous devez dire ce qui se passe lorsque x% i == 0 condition non rempli et la valeur de i reste constante et aussi besoin de voir quand toutes les conditions non satisfaites , alors c'est un prime xxx


0 commentaires

1
votes

Juste pour montrer une alternative, ce que vous pourriez faire est de vérifier à partir du numéro 2 à votre numéro si l'opération (x% i) est égale à zéro. Si cela ne se passe jamais, ce sera une prime. XXX


0 commentaires