
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 :
Que pensez-vous de cette affirmation ?
Question 2 : un peu de maths
Montrer que 421421421 se factorise « facilement » en produit de 2 nombres entiers.
Question 3 : Pair ou impair
a) Ecrire une fonction python est_pair(nombre) permettant de déterminer si un nombre entier est un nombre pair ou pas.
Si le nombre est pair, la fonction renverra l’indicateur booléen True , et False si le nombre n’est pas pair.
b) Ecrire sur le même principe une fonction est_impair(nombre)
def pair(nombre):
'''
renvoie True si le nombre est pair, False sinon
>>>est_pair(1)
False
>>>est_pair(15484854545462)
True
>>>est_pair(18)
True
>>>est_pair(100000007)
False
'''
Question 4 : liste de nombres premiers
Compléter la deuxième fonction pour qu’elle réponde à sa docstring.
import math
def est_premier(nombre):
'''
renvoie True si le nombre est premier, False sinon
>>>est_premier(1)
False
>>>est_premier(15484854545462)
False
>>>est_premier(17)
True
>>>est_premier(100000007)
True
'''
if nombre==1:
return False
for diviseur in range(2, int(math.sqrt(nombre))+1):
if nombre%diviseur==0:
return False
return True
def liste_nombres_premier(n):
'''
retourne la liste des nombres premiers inférieurs
ou égaux à n
: entrée : n : int
: sortie : str
>>>>>> liste_nombres_premier(11)
'2,3,5,7,11'
liste_nombres_premier(100)
'2,3,5,7,11,13,17,19,23,29,31,37,
41,43,47,53,59,61,67,71,73,79,83,89,97'
'''
proposition de correction
def pair(nombre):
if nombre%2==0:
return True
else:
return False
def impair(nombre):
if nombre%2==1:
return True
else:
return False
import math
def est_premier(nombre):
'''
renvoie True si le nombre est premier, False sinon
>>>est_premier(1)
False
>>>est_premier(15484854545462)
False
>>>est_premier(17)
True
>>>est_premier(100000007)
True
'''
if nombre==1:
return False
for diviseur in range(2, int(math.sqrt(nombre))+1):
if nombre%diviseur==0:
return False
return True
def liste_nombres_premier(n):
'''
retourne la liste des nombres premiers inférieurs
ou égaux à n
: entrée : n : int
: sortie : str
>>>>>> liste_nombres_premier(11)
'2,3,5,7,11'
liste_nombres_premier(100)
'2,3,5,7,11,13,17,19,23,29,31,37,
41,43,47,53,59,61,67,71,73,79,83,89,97'
'''
retour=''
for i in range(2,n+1):
if est_premier(i):
retour+=str(i)+","
return retour[:-1]