Compter et lister les diviseurs
Exercice de TD · niveau 2 · sciences numériques et technologie (seconde), chapitre 4 — Les boucles · La boucle bornée : for
Énoncé
Soit un entier n supérieur ou égal à .
- Écrire une fonction
nb_diviseurs(n)qui renvoie le nombre de diviseurs den. - L'utiliser pour trouver, parmi les entiers de à , celui qui possède le plus de diviseurs.
- Que peut-on dire d'un entier ayant exactement deux diviseurs ?
Corrigé
1.
def nb_diviseurs(n):
compteur = 0
for d in range(1, n + 1):
if n % d == 0:
compteur = compteur + 1
return compteur
print(nb_diviseurs(12)) # 6 : 1, 2, 3, 4, 6, 12
La borne n + 1 est nécessaire pour tester n lui-même, qui est toujours l'un de ses diviseurs.
2.
meilleur = 1
record = 1
for n in range(1, 31):
d = nb_diviseurs(n)
if d > record:
record = d
meilleur = n
print(meilleur, record) # 24 8
C'est , avec diviseurs ().
On reconnaît ici deux schémas différents : le premier compte (accumulateur), le second retient un record (maximum provisoire). Le second exige d'initialiser record à une valeur sûrement dépassable.
3. Un entier ayant exactement deux diviseurs, et lui-même, est un nombre premier — c'est la définition.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.