Last active
June 1, 2023 15:32
-
-
Save sebprunier/2b1dc6047434b10af8fb to your computer and use it in GitHub Desktop.
Déterminer si un nombre est premier en Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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