Division euclidienne

publicité
[ Division euclidienne \
TS spé ISN
Mettons nous d’accord :
1. ∀n ∈ N et ∀a ∈ N∗
∃!(q, r ) couple d’entiers naturels vérifiant : n = a × q + r ET 0 6 r < a.
n est le dividende, a le diviseur, q le quotient et r le reste.
∀ signifie « pour tout » ; ∃ signifie « il existe » et ∃! signifie « il existe un unique ».
C’est la division euclidienne qui signifie que l’on peut partager n objets pour a personnes (chacune recevant
q objets) et qu’ensuite il restera r objets (à noter qu’alors le reste r est forcément strictement plus petit que le
diviseur a sinon la division/ le partage n’est pas finie et qu’il peut être nul quand la division est entière, c’est à dire
que le partage est total).
2. Comment obtenir le reste et le quotient à l’aide d’une calculatrice de lycée ?
(a) Sur un exemple. On cherche le quotient et le reste de 75 divisé par 7 :
On calcule 75 ÷ 7 = 10, 71. . ..
On isole alors 10 et l’on fait 10 × 7 = 70 puis 75 − 70 = 5 et l’on a : 75 = 7 × 10 + 5.
(b) Analyse mathématique : la fonction « partie entière ».
Pour tout nombre réel x, on définit E (x) comme le plus grand entier plus petit que x.
Ainsi E (10, 71) = 10 E (π) = 3 E (0, 8759) = 0 E (−1, 245) = −2.
On la définit ainsi : ∀x ∈ R, ∃!q ∈ N tel que q 6 x < q + 1, on a alors E (x) = q
La fonction partie entière E s’appelle « floor » en anglais et ne doit pas être confondue avec la fonction troncature qui supprime la partie décimale, en effet : E (−0, 78) = −1 alors que la troncature de -0,78 est 0.
(c) Ainsi 10 = E (10, 71. . .) est le quotient et 75 − 7 × 10 est le reste de 75 ÷ 7.
Donc 75 = 7 × E (75/7) + r avec r = 75 − 7 × E (75/7).
C’est à dire que si on divise un entier n par un autre entier non nul d, on aura :
n = d × E (n/d) + [n − d × E (n/d)]
3. Et en Python ?
// permet d’obtenir le quotient entier de la division euclidienne : 75//7 = 10.
% permet d’obtenir le reste de la division euclidienne : 75%7 = 5.
Donc ∀n ∈ N et ∀d ∈ N∗ , on a : n = d × [n//d] + [n%r ]
Les maths avec Gaston :
1. Gaston tourne depuis longtemps, en supposant que toutes les
bouteilles sont apparentes, peux-tu déterminer combien de
tours il a effectué ?
2. Quelles sont les numéros qu’il a affecté à la première bouteille ?
à la deuxième ? à la dixième ?
Les modulos :
1. Considérons la série de nombres suivants :
1 2 3 4 5 6 7 8 9 10 11 12 . . .
Tous les nombres du type 2 + 3 × n (avec n ∈ N) sont écris en rouge car ils font partis de la même famille : on dit
qu’ils sont égaux modulos 3, car ils ont tous le même reste dans la division euclidienne par 3.
On dira que deux nombres sont égaux modulo(n) quand ils ont le même reste dans la division euclidienne par n.
On notera cette égalité ≡. Par exemple : 8 ≡ 5 modulo(3).
2. Remarque importante : tout multiple de 3 est égal à 0 modulo 3.
Plus généralement, pour tout n ∈ N, tout multiple de n est égal à 0 moduo n.
1
3. En Python, nous auront souvent affaire aux modulos :
(a) Qu’est-ce que range(0,n) ?
La fonction range crée une liste d’entier. Le premier paramètre (ici 0) indique la valeur du premier, le deuxième
paramètre indique que la liste devra s’arrêter à n − 1.
Pourquoi n − 1 ? Parce que n ≡ 0 modulo(n) ! Nous avons n valeurs à partir de 0 ce sont donc tous les restes
possibles dans la division euclidienne par n : de 0 à n − 1.
(b) Comment répéter un ordre de manière alterné ?
for n in range(0,1000) :
if n%2==0 :
print(n," est pair")
elif n%2==1 :
print(n, "est impair")
Cet algorithme permet de sélectionner les entiers pairs et impairs entre 0 et 999.
Changement de bases :
Quelque soit le nombre n écrit en base 10, il est possible de l’écrire dans une base quelconque. Et cela est vrai « à cause »
de la division euclidienne !
1. Montrons le sur un exemple : écriture de 158 de la base 10 à la base 7.
Effectuons des divisions euclidienne successives de 158 puis de chaque quotient non nul par 7 :
158 = 22 × 7 + 4
22 = 3 × 7 + 1
3 = 0×7+3
Ensuite on écrit la première ligne à l’aide des suivantes :
158 = 22 × 7 + 4
= (3 × 7 + 1) × 7 + 4
= 3 × 72 + 1 × 7 + 4
Et c’est fini puisque nous avons pu écrire 158 en fonction des puissances de 7 multipliées par des nombres strictement inférieures à 7 (parce que justement ce sont des restes dans la division par 7 : regardez bien le processus) :
et c’est bien l’écriture de 158 en base 7 !
158 = 3 × 72 + 1 × 7 + 4 × 70 = 314
7
2. En pratique on pose des divisions à potences successives :
158
7
4
22 7
Et ainsi « en remontant »on lit :
1
3 7
3 0
158 = 3 × 72 + 1 × 7 + 4 × 70 = 314
7
3. l’algorithme :
On prend un nombre n écrit en base 10 et on choisit une base d.
Tant que le quotient n’est pas nul, faire :
(a) Effectuer la division euclidienne de n par d.
(b) Stocker le reste dans une liste.
(c) remplacer n par le quotient de la division.
A la sortie de la boucle il ne reste plus qu’à écrire le nombre en base d en prenant les nombres de la liste dans
l’ordre inverse où ils ont été stockés.
2
Téléchargement