Les ensembles 𝔻 et ℚ : algorithmique
Trouver une période d'un rationnel
Nous allons utiliser des listes vues dans la partie STATISTIQUES. En plus nous aurons besoin :
- de la méthode
append
qui permet de rajouter un élément à la fin de la liste ;
- de tester si un élément est dans la liste ou non
a in liste
ou a not in liste
.
Voici des exemples d'utilisation de la méthode
append
Voici la fonction periodeFrac
où les paramètres a et b sont des entiers :
1. Analyser la fonction periodeFrac
par rapport aux paramètres a et b.
2. Faire tourner à la main la fonction periodeFrac
pour a=5 et b=7. Voir la solution
Les variables |
a |
b |
a%b |
listeRestes |
quotient |
état initial |
5 |
7 |
1 |
[] |
[] |
On entre dans la boucle while car 5 n'est pas dans listeRestes |
a%b not in listeRestes |
a |
b |
a%b |
listeRestes |
quotient |
True |
50 |
7 |
1 |
[5] |
[0] |
True |
10 |
7 |
3 |
[5,1] |
[0,7] |
True |
30 |
7 |
2 |
[5,1,3] |
[0,7,1] |
True |
20 |
7 |
6 |
[5,1,3,2] |
[0,7,1,4] |
True |
60 |
7 |
4 |
[5,1,3,2,6] |
[0,7,1,4,2] |
True |
40 |
7 |
5 |
[5,1,3,2,6,4] |
[0,7,1,4,2,8] |
On sort de la boucle while car 5 est dans listeRestes |
|
a%b |
listeRestes |
quotient |
i |
periode |
|
5 |
[5,1,3,2,6,4,5] |
[0,7,1,4,2,8,5] |
0 |
"" |
On entre dans la boucle for |
|
i |
l |
quotient |
quotient[l] |
periode |
|
0 |
1 |
[0,7,1,4,2,8,5] |
7 |
"7" |
|
0 |
2 |
[0,7,1,4,2,8,5] |
1 |
"71" |
|
0 |
3 |
[0,7,1,4,2,8,5] |
4 |
"714" |
|
0 |
4 |
[0,7,1,4,2,8,5] |
2 |
"7142" |
|
0 |
5 |
[0,7,1,4,2,8,5] |
8 |
"71428" |
|
0 |
6 |
[0,7,1,4,2,8,5] |
5 |
"714285" |
On sort de la boucle for car len(quotient)=7 |
La fonction renvoie "714285" |
masquer