Vérifier si un nombre est premier en Python

Vaibhhav Khetarpal 10 octobre 2023
  1. Utilisez la méthode d’itération simple pour déterminer un nombre premier en Python
  2. Utilisez la fonction sympy.isprime() pour vérifier si le nombre donné est un nombre premier en Python
Vérifier si un nombre est premier en Python

Un nombre premier peut être représenté comme un nombre naturel sans autres diviseurs positifs, à l’exception du nombre 1 et lui-même. Le nombre 1 n’est pas compté dans la liste des nombres premiers.

Ce tutoriel abordera les différentes méthodes que vous pouvez utiliser pour vérifier si un nombre est un nombre premier.

Utilisez la méthode d’itération simple pour déterminer un nombre premier en Python

Dans cette méthode, nous utilisons une méthode d’itération simple utilisant une boucle for ou while. Itérer sur les nombres en commençant par 2 et en remontant jusqu’à K/2 et vérifier si l’un de ces nombres divise K.

S’il existe un nombre correspondant à ce critère, alors False est renvoyé. En revanche, si tous les nombres ne correspondent pas à ce critère, le nombre donné K est un nombre premier et la valeur True est renvoyée.

Le code suivant utilise la méthode d’itération simple pour vérifier si le nombre donné est un nombre premier en Python.

k = 13

# 1 not being a prime number, is ignored
if k > 1:
    for i in range(2, int(k / 2) + 1):
        if (k % i) == 0:
            print("It is not a prime number")
            break
    else:
        print("It is a prime number")

else:
    print("It is not a prime number")

Production:

It is a prime number

Vous pouvez optimiser le code ci-dessus en appliquant quelques modifications. Effectuez les optimisations suivantes pour rendre le code encore plus rapide :

*Vérifiez jusqu’à ce que la racine du nombre donné soit atteinte au lieu de vérifier le nombre exact. Ce processus élimine essentiellement la redondance qui se produit lorsqu’un facteur plus grand du nombre K est un multiple d’un facteur plus petit qui a déjà été itéré.

*Tous les nombres premiers existent sous la forme 6n±1, avec 2 et 3 étant les seules exceptions. Par conséquent, vérifier la divisibilité du nombre donné avec 2 et 3, puis vérifier chaque nombre qui a la forme 6n±1 est la solution la plus efficace.

Le code suivant utilise la méthode d’itération simple optimisée pour vérifier si le nombre donné est un nombre premier en Python.

def isitPrime(k):
    if k == 2 or k == 3:
        return True
    if k % 2 == 0 or k < 2:
        return False
    for i in range(3, int(k ** 0.5) + 1, 2):
        if k % i == 0:
            return False

    return True


print(isitPrime(13))

Production:

True

La méthode d’itération optimisée la rend plus rapide et plus efficace que la méthode d’itération simple d’environ 30%.

Utilisez la fonction sympy.isprime() pour vérifier si le nombre donné est un nombre premier en Python

SymPy est une bibliothèque en Python utilisée pour implémenter les mathématiques symboliques. Il vise à être un système de calcul formel (CAS) simpliste qui contient toutes les fonctionnalités essentielles. L’installation de ce module est nécessaire pour cette méthode, et il peut être téléchargé en utilisant simplement la commande pip.

Le sympy.isprime() est une fonction intégrée sous le module SymPy et peut être utilisé pour vérifier d’éventuels nombres premiers. C’est une fonction directe et renvoie True si le nombre à vérifier est premier et False si le nombre n’est pas premier.

Le code suivant utilise la fonction sympy.isprime() pour vérifier si le nombre donné est un nombre premier en Python.

from sympy import *

isprime(8)
isprime(11)

Production:

False
True

Notons que tout nombre négatif ne rentre pas dans le critère des Nombres Premiers. La sortie de ces fonctions peut varier si un nombre négatif est comparé à celui-ci.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn