user
Comment tester si un nombre est premier en Python ?
alphonsio

Voici un exemple de code Python qui permet de tester si un nombre est premier :

def est_premier(nombre):
    """Vérifie si un nombre est premier."""
    if nombre <= 1:
        return False  # Les nombres <= 1 ne sont pas premiers
    for i in range(2, int(nombre**0.5) + 1):
        if nombre % i == 0:
            return False  # Divisible par un autre nombre
    return True  # Aucun diviseur trouvé

# Exemple d'utilisation
nombre = int(input("Entrez un nombre : "))
if est_premier(nombre):
    print(f"{nombre} est un nombre premier.")
else:
    print(f"{nombre} n'est pas un nombre premier.")

Explications :

Le principe général consiste à tester tous les diviseurs compris entre 22 et NN. Si aucun diviseur n'est trouvé, cela implique que le nombre est nécessairement premier.

Afin d'optimiser le code, le test des diviseurs s'arrête ici à N\sqrt{N} plutôt que NN, car si un diviseur d1Nd_1 \ge \sqrt{N} existe, alors il existe aussi un autre diviseur d2Nd_2 \le \sqrt{N}. Si aucun diviseur n'est trouvé entre 22 et N\sqrt{N}, cela implique que NN est nécessairement premier.

  1. Cas des nombres ≤ 1 : Les nombres inférieurs ou égaux à 1 ne sont pas premiers.
  2. Optimisation avec la racine carrée : Inutile de vérifier tous les diviseurs jusqu'à nombre - 1. Il suffit de vérifier jusqu'à la racine carrée de nombre, car si un diviseur existe, il apparaîtra avant ou à la racine carrée.
  3. Racine carré : La racine carré peut s'écrire x=x0.5\sqrt{x} = x^{0.5} d'où la notation nombre**0.5
  4. Boucle for : On vérifie si le nombre est divisible par un entier compris entre 2 et int(nombre**0.5) + 1. Si c'est le cas, le nombre n'est pas premier => return False
  5. Retour : Si aucun diviseur n'est trouvé, le nombre est premier => return True

Vous pouvez tester le code ci-dessous :