Skip to content

Instantly share code, notes, and snippets.

@sebprunier
Last active June 1, 2023 15:32
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sebprunier/2b1dc6047434b10af8fb to your computer and use it in GitHub Desktop.
Save sebprunier/2b1dc6047434b10af8fb to your computer and use it in GitHub Desktop.
Déterminer si un nombre est premier en Python
"""
Ce module propose une fonction permettant de déterminer si un nombre entier est premier.
Par exemple :
>>> estPremier(5)
True
"""
def estPremier(n) :
"""
Retourne True si n est premier, False sinon. n doit être un entier.
Les nombres négatifs ne sont pas premiers :
>>> estPremier(-1)
False
Les nombres 0 et 1 ne sont pas premiers :
>>> estPremier(0)
False
>>> estPremier(1)
False
Un nombre premier n'est divisible que par 1 et par lui-même :
>>> estPremier(2)
True
>>> estPremier(4)
False
>>> estPremier(11)
True
Une erreur est lancée si le nombre n'est pas un entier :
>>> estPremier(1.3)
Traceback (most recent call last):
...
ValueError: n doit etre un entier
"""
if (not(type(n) is int)) :
raise ValueError("n doit etre un entier")
if n <= 1 :
return False
for i in range(2, n) :
if (n % i == 0) :
return False
return True
if __name__ == "__main__":
import doctest
doctest.testmod()
import sys
from premier import estPremier
userInput = input('Choisissez un nombre : ')
try:
n = int(userInput)
except ValueError:
print("Oops ! Ceci n'est pas un nombre...")
sys.exit()
if estPremier(n) :
print("{} est un nombre premier".format(n))
else :
print("{} n'est pas un nombre premier".format(n))
import unittest
from premier import estPremier
class TestEstPremier(unittest.TestCase):
def test_estPremier(self):
self.assertFalse(estPremier(-1))
self.assertFalse(estPremier(0))
self.assertFalse(estPremier(1))
self.assertTrue(estPremier(2))
self.assertFalse(estPremier(4))
self.assertTrue(estPremier(11))
self.assertRaises(ValueError, lambda: estPremier(1.3))
if __name__ == '__main__':
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment