Nombres et calculs
Exercice 6
On considère le programme suivant, écrit dans le langage PYTHON.
1. Faire fonctionner ce programme si la valeur saisie est 20.
Détailler bien les valeurs successives prises par les variables.
2. A quoi sert ce programme pour une valeur de l'entier naturel n quelconque.
3. Ecrire ce programme et le faire fonctionner pour n=1960.
Que s'affiche-t-il alors dans la console?
Que cela signifie-t-il?
Solution...
Corrigé
On considère le programme suivant, écrit dans le langage PYTHON.
1. Fonctionnement du programme si la valeur saisie est 20.
Le programme commence à la ligne 11. Les lignes précédentes permettent seulement de définir la fonction diviseurs.
Il s'affiche: "recherche des facteurs premiers d'un nombre"
ligne 12: n prend donc la valeur 20
ligne 13: la fonction diviseurs est appelée.
Le programme saute à la ligne 2
L=[1]
div=2
Comme n>1 (car n=20), la première boucle while commence
(cette boucle est composée des lignes 5 à 8)
Comme 20 est divisible par 2, la première boucle imbriquée while commence.
(cette boucle est composée des lignes 6 à 7)
L=[1,2] (la valeur 2 a été ajoutée au bout de la liste L)
n=20/2=10
Comme 10 est divisible par 2, la seconde boucle imbriquée while commence.
L=[1,2,2] (la valeur 2 a été ajoutée au bout de la liste L)
n=10/2=5
Comme 5 n'est pas divisible par 2, les boucles imbriquées while cessent.
div=2+1=3
Comme n>1 (car n=5), la seconde boucle while commence
Comme 5 n'est pas divisible par 3, il n'y a pas de boucle imbriquée while.
div=3+1=4
Comme n>1 (car n=5), la troisième boucle while commence
Comme 5 n'est pas divisible par 4, il n'y a pas de boucle imbriquée while.
div=4+1=5
Comme n>1 (car n=5), la quatrième boucle while commence
Comme 5 est divisible par 5, une première boucle imbriquée while commence.
L=[1,2,2,5] (la valeur 5 a été ajoutée au bout de la liste L)
n=5/5=1
Cette fois-ci, on n'a plus n>1 (car n=1)
Les boucles cessent.
Il s'affiche: "la liste des facteurs premiers de 20 est: [1,2,2,5]"
En fait, le programme a décomposé 20 de façon progressive comme ci-dessous.
20 est divisible par 2, d'où: $20=2×10$
10 est divisible par 2, d'où: $20=2×2×5$
Comme 5 n'est pas divisible par 2, on teste pour les diviseurs suivants.
5 n'est pas divisible par 3.
5 n'est pas divisible par 4 (ce qui est normal car il ne l'est pas par 2)
5 est divisible par 5, d'où: $20=2×2×5×1$
Et comme le dernier diviseur est 1, on arrête.
2. Ce programme affiche la liste des facteurs premiers de l'entier naturel n.
3. Pour n=1960, il s'affiche finalement:
la liste des facteurs premiers de 1960 est: [1, 2, 2, 2, 5, 7, 7]
Cela signifie que 1960 se décompose en produit de facteurs premiers de la façon suivante:
$1960=1×2^3×5×7^2$