
Dans un épisode de la série policière « Unité 42 », on peut voir l’affirmation ci-dessus.
« 421421421, c’est un nombre premier en binaire ».
Que pouvons-nous penser de cette affirmation ?
Question 1 :
Chercher la définition d’un nombre binaire. Que peut-on en déduire ?
Question 2 : un peu de maths
Montrer que 421421421 se factorise « facilement » en produit de 2 nombres entiers.
Question 3 : premier programme, première fonction
Ecrire une fonction python est_premier(nombre) permettant de déterminer si un nombre entier est un nombre premier ou pas.
Si le nombre est premier, la fonction renverra l’indicateur booléen True , et False si le nombre n’est pas premier.
Ressources éventuelles :
On peut lire avec un esprit critique les pages suivantes qui sont les premières proposées par un moteur de recherche :
https://zestedesavoir.com/forums/sujet/10955/python-programme-qui-verifie-si-un-nombre-est-premier/
https://www.quennec.fr/trucs-astuces/langages/python/python-calculer-les-nombres-premiers
Proposition de correction :
from math import sqrt
def est_premier(nombre):
'''
nombre : int
retourne True si le nombre est premier
retourne False si le nombre n'est pas premier
'''
if nombre%2==0 :#si le nombre est pair
return False
# on commence à tester les diviseurs à partir de 3
diviseur_possible=3
# tant que le diviseur est inférieur à la racine carrée et qu'il ne s'agit pas d'un diviseur de nombre
while diviseur_possible<sqrt(nombre) and nombre%diviseur_possible!=0:
diviseur_possible+=2 # on avance de 2 en 2 pour éviter les diviseurs pairs
if diviseur_possible>sqrt(nombre):
return True
else:
return False