next up previous contents index
suivant: La fonction "estpremier" monter: Calcul de AP mod N précédent: Traduction Xcas   Table des matières   Index

Un exercice

Étant donné deux entiers a $ \in$ $ \mathbb {N}$* et n $ \in$ $ \mathbb {N}$, n $ \geq$ 2, on veut connaitre les différentes valeurs de ap mod n pour p $ \in$ $ \mathbb {N}$, c'est à dire l'orbite de a dans ( $ \mathbb {Z}$/n$ \mathbb {Z}$,×).
On démontre que l'orbite se termine toujours par un cycle puisque $ \mathbb {Z}$/n$ \mathbb {Z}$ a un nombre fini d'éléments.

Solution On tape : (irem(2^p ,24)$(p=0..10
On obtient : 1,2,4,8,16,8,16,8,16,8,16 donc h = 3 et T = 2
On utilise la commande member qui teste si un élément est dans une liste et member renvoie soit l'indice +1, soit 0. On peut utiliser soit un tantque soit un repeter (tantque non arrêt faire....tantque ou repeter ...jusqua arrêt) et on remarquera le test d'arrêt. On sait qu'une affectation renvoie la valeur affectée, donc k:=member(b,L) renvoie soit 0 soit un nombre non nul. On fait une boucle et on s'arrete quand k:=member(b,L) est non nul.

orbite1(a,n):={
local k,h,T,p,b,L;
L:=[1];
p:=1;
b:=irem(a,n);
tantque !(k:=member(b,L)) faire
L:=append(L,b);
b:=irem(b*a,n);
p:=p+1;
ftantque;
h:=k-1;
T:=p-h;
return h,T,L;
}:;
orbite2(a,n):={
local k,h,T,p,b,L;
L:=[];
p:=0;
b:=1;
repeter
L:=append(L,b);
b:=irem(b*a,n);
p:=p+1;
jusqua (k:=member(b,L));
h:=k-1;
T:=p-h;
return h,T,L;
}:;
On dessine les points du cycle et de 2 périodes avec la couleur a ou la couleur 0 lorsque a = 7 :
dessin(a,n):={
local k,h,T,L,P,s,LT;
P:=NULL;
h,T,L:=orbite1(a,n);
s:=dim(L);
LT:=mid(L,h);
L:=concat(concat(L,LT),LT);
pour k de 0 jusque s+2*T-1 faire 
P:=P,point(k,L[k]);
fpour;
si a==7 alors return affichage(P,epaisseur_point_3);fsi;
return affichage(P,a+epaisseur_point_3);
}:;
On tape : dessin(2,11)
On tape : dessin(3,11)
On tape : dessin(2,9)
On tape : dessin(3,9)
et on observe.....
On peut rappeler On tape :
est_premier_avec(n):={
local L,a;
L:=NULL;
pour a de 1 jusque n-1 faire
si gcd(a,n)==1 alors L:=L,a; fsi;
fpour;
return L;
}:;
Puis, on tape : E:=est_premier_avec(9)
On obtient : 1,2,4,5,7,8
et on a bien : euler(9)=6=dim(E)
Une démonstration rapide de ces théorèmes :
Si a et n sont premiers entre eux, a est inversible dans $ \mathbb {Z}$/n$ \mathbb {Z}$,× Soit E l'ensemble des nombres de [1..n] qui sont premiers avec n (E:=est_premier_avec(n)) et soit Ea l'ensemble des k*a pour k $ \in$ E. Tous les éléments de Ea sont distincts et inversibles dans $ \mathbb {Z}$/n$ \mathbb {Z}$,×: donc les ensembles E et Ea sont les mêmes. En faisant le produit de tous ces éléments on obtient $ \Pi_{{k\in E}}^{}$k = $ \Pi_{{k\in Ea}}^{}$k = a$\scriptstyle \phi$(n)$ \Pi_{{k\in E}}^{}$k, $ \Pi_{{k\in E}}^{}$k étant inversible dans $ \mathbb {Z}$/n$ \mathbb {Z}$,× on en déduit que a$\scriptstyle \phi$(n) = 1.


next up previous contents index
suivant: La fonction "estpremier" monter: Calcul de AP mod N précédent: Traduction Xcas   Table des matières   Index
Documentation de giac écrite par Renée De Graeve