Adloun

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 à .

  1. Écrire une fonction nb_diviseurs(n) qui renvoie le nombre de diviseurs de n.
  2. L'utiliser pour trouver, parmi les entiers de à , celui qui possède le plus de diviseurs.
  3. 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.