Fiche Professeur - Gradus ad Mathematicam

publicité
7
6 882 309 est-il divisible
par 7 ? par 21 ?
Fiche Professeur
TS
Spé
Math
Auteurs : Pierre Lapôtre & Raymond Moché
Objet de l’activité : Arithmétique et algorithmique En fait, on se pose la question pour un
entier n ⩾ 1 quelconque. Cela donne un exercice d’arithmétique apparemment peu connu autour de
la divisibilité par 7 (mais aussi par 3 et par 21) avec mise en œuvre algorithmique.
Commentaires :
• Cette activité est plutôt facile. L’application TICE pourrait être proposée en Première.
• Pour savoir si un nombre est divisible par sept, on peut, bien sûr, poser la division ou la faire à la
machine (calculatrice, ordinateur).
• La méthode proposée dans la fiche Élève ne nécessite que du calcul mental lorsque n est petit. La
justifier est plutôt intéressant. La programmer permet d’accéder à de plus grandes valeurs de n. Elle
est sans réel intérêt pratique.
• L’énoncé a été rédigé pour scilab mais l’exercice n’est pas scilab-dépendant. Il suffit de remplacer
dans l’énoncé l’expression « fonction-scilab » par le terme qui convient au logiciel de calcul utilisé.
Pré-requis : En arithmétique, division euclidienne, nombres premiers et lemme d’Euclide (si un
nombre premier p divise un produit a· b de deux entiers, il divise soit a, soit b) ou unicité de la décomposition d’un nombre entier en produit de nombres premiers ; en algorithmique, connaissances de
base de scilab (éditeur de texte scinotes, syntaxe d’une fonction-scilab, boucle tant que, commandes
d’affichage).
Matériel utilisé : Ordinateur équipé de scilab pour les lycées.
Durée indicative : Une heure (la quatrième question peut être omise).
Fichiers téléchargeables :
• Pour les élèves : Fiche Élève (.pdf).
• Pour les professeurs : Fiche Professeur (.pdf) & fichiers DivSept (.sci), DivVingtUn (.sci).
Solution :
1.a - m = q −2u. Par exemple, si n = 1, m = −2 ; si n = 315, m = 21. Ceci ne doit pas être considéré
comme évident. En effet, on vient de modéliser une démarche concrète (celle qui commence par « On
efface le chiffre des unités, etc »).
1.b - On déduit de n = 10· m + 21· u que si m est un multiple de 7, n est un multiple de 7. Inversement, si n est un multiple de 7, 10· m est un multiple de 7. Comme 7 est un nombre premier qui ne
divise pas 10, il divise m, d’après le lemme d’Euclide. Ce raisonnement reste correct si on remplace
7 par 3 ou par 21.
n−u
n
1.c - Comme u ⩾ 0, m ⩽ q =
⩽ ·
10
10
n
n0
À la deuxième itération, s’il y en a une, on a m ⩽
⩽ 2 et ainsi de suite. Donc m deviendra
10
10
< 1, donc ⩽ 0, à un certain moment.
1.d - Toutes les valeurs de m obtenues au cours des itérations sont ⩾ −18 car comme q ⩾ 0 et u ⩽ 9
(division euclidienne), m = q − 2· u ⩾ −2· u ⩾ −18.
1.e - À chaque itération, n et m sont tous les deux soit divisibles par 7, soit non divisibles par 7
(cf.1.b). n0 et m1 ont donc la même propriété. Cela reste vrai si l’on remplace 7 par 3 ou par 21.
2 - Voici un algorithme commenté qui met en œuvre cette méthode :
1
Listing 1 – Fonction DivSept.sci
function DivSept ( n ) //n e s t un e n t i e r donne >=1.
m1=n ; //m1 c o n t i e n d r a l e s v a l e u r s s u c c e s s i v e s de n dont l a v a l e u r i n i t i a l e
// e s t g a r d e e dans n (n_0 de l ’ enonce ) . Sa v a l e u r f i n a l e e s t l e m_1
// de l ’ enonce .
while m1>=1
q=q u o t i e n t (m1, 1 0 )
u=r e s t e (m1 , 1 0 ) ;
m1=q−2∗u ;
end
i f (m1==0|m1==−7|m1==−14)
a f f i c h e r ( " Le␣nombre␣ "+string ( n)+ " ␣ e s t ␣ d i v i s i b l e ␣ par ␣7 " ) ;
else
a f f i c h e r ( " Le␣nombre␣ "+string ( n)+ " ␣n ’ ’ e s t ␣ pas ␣ d i v i s i b l e ␣ par ␣7 " ) ;
end
endfunction
3.a - Voici quelques exemples d’applications :
Listing 2 – Exemples
−−>cl e a r
−−>exec ( ’ Chemin␣ deDivSept . s c i ’ , −1)
−−>DivSept ( 6 8 8 2 3 0 9 )
Le nombre 6882309 e s t d i v i s i b l e
par 7
−−>DivSept ( 6 8 8 2 3 0 9 0 0 0 )
Le nombre 6882309000 e s t d i v i s i
b l e par 7
−−>DivSept ( 1 0 ^ ( 3 0 ) )
Le nombre 1 . 0 0 0 0 0 0 0 0 0D+30 n ’ e s t
pas d i v i s i b l e par 7
−−>
3.b - Au cours des 3 premières itérations lorsque n = 6 882 309 000, les valeurs successives de m sont
68 82 30 900, 688 23 090 et 6 882 309. On sait déjà que ce nombre est divisible par 7.
3.c - À chaque itération, n = 1030 perd un zéro. À la dernière itération, n = 1 et m1 = −2, donc
1030 n’est pas divisible par 7.
4 - La fonction-scilab ci-dessous affiche la divisibilité par 3, 7 et 21 :
Listing 3 – Fonction DivVingtUn.sci
function DivVingtUn ( n ) //n e s t un e n t i e r donne >=1.
m1=n ; //m1 c o n t i e n d r a l e s v a l e u r s s u c c e s s i v e s de n dont l a v a l e u r i n i t i a l e
// e s t g a r d e e dans n (n_0 de l ’ enonce ) . Sa v a l e u r f i n a l e e s t l e m_1
// de l ’ enonce .
while m1>=1
q=q u o t i e n t (m1, 1 0 )
u=r e s t e (m1 , 1 0 ) ;
m1=q−2∗u ;
end
i f (m1==0|m1==−7|m1==−14)
a f f i c h e r ( " Le␣nombre␣ "+string ( n)+ " ␣ e s t ␣ d i v i s i b l e ␣ par ␣7 " ) ;
2
else
a f f i c h e r ( " Le␣nombre␣ "+string ( n)+ " ␣n ’ ’ e s t ␣ pas ␣ d i v i s i b l e ␣ par ␣7 " ) ;
end
i f (m1==0|m1==−3|m1==−6|m1==−9|m1==−12|m1==−15|m1==−18)
a f f i c h e r ( " I l ␣ e s t ␣ d i v i s i b l e ␣ par ␣3 " ) ;
else
a f f i c h e r ( " I l ␣n ’ ’ e s t ␣ pas ␣ d i v i s i b l e ␣ par ␣3 " ) ;
end
i f (m1==0)
a f f i c h e r ( " I l ␣ e s t ␣ d i v i s i b l e ␣ par ␣ 21 " ) ;
else
a f f i c h e r ( " I l ␣n ’ ’ e s t ␣ pas ␣ d i v i s i b l e ␣ par ␣ 21 " ) ;
end
endfunction
Voici quelques exemples :
Listing 4 – Exemples
−−>cl e a r
−−>exec ( ’ Chemin␣ de ␣ DivVingtUn . s c i ’ , −1)
−−>DivVingtUn ( 6 8 8 2 3 0 9 )
Le nombre 6882309 e s t d i v i s i b l e
par 7
I l e s t d i v i s i b l e par 3
I l e s t d i v i s i b l e par 21
−−>DivVingtUn ( 6 8 8 2 3 1 2 )
Le nombre 6882312 n ’ e s t pas d i v
i s i b l e par 7
I l e s t d i v i s i b l e par 3
I l n ’ e s t pas d i v i s i b l e par 21
−−>DivVingtUn ( 6 8 8 2 3 1 6 )
Le nombre 6882316 e s t d i v i s i b l e
par 7
I l n ’ e s t pas d i v i s i b l e par 3
I l n ’ e s t pas d i v i s i b l e par 21
−−>DivVingtUn ( 6 8 8 2 3 0 9 0 0 0 )
Le nombre 6882309000 e s t d i v i s i
b l e par 7
I l e s t d i v i s i b l e par 3
I l e s t d i v i s i b l e par 21
−−>DivVingtUn ( 1 0 ^ ( 3 0 ) )
Le nombre 1 . 0 0 0 0 0 0 0 0 0D+30 n ’ e s t
pas d i v i s i b l e par 7
I l n ’ e s t pas d i v i s i b l e par 3
I l n ’ e s t pas d i v i s i b l e par 21
Pour aller moins loin !
Voici un procédé simple qui se fait de tête, qui produit le reste de la division par 7 et qui peut se
programmer, expliqué à l’aide d’un exemple (quand on tient absolument à ne pas se servir de la
commande reste de scilab pour les lycées) :
3
6882309
6112302
512302
22302
1302
602
42
0
(si on retire à un nombre un multiple de 7, on ne change pas son reste dans la division par 7).
4
Téléchargement