13.07.2015 Views

Les nombres premiers de Mersenne

Les nombres premiers de Mersenne

Les nombres premiers de Mersenne

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CApplications numériques sous MapleRemarqueLa fonction isprime(m) pré-programmée dans Maple permet <strong>de</strong> tester si l'entier m est premier .Il existe également une fonction spécialisée mersenne(n) dans le package numtheory .Pour d'évi<strong>de</strong>ntes raisons pédagogiques, on a préféré ici reprogrammer une fonction isprimeM(n)qui teste la primalité <strong>de</strong> M n à l'ai<strong>de</strong> du critère <strong>de</strong> Lucas-Lehmer .La fonction isprimeM(n)Notons que la suite (L n ) <strong>de</strong> Lucas-Lehmer croît beaucoup plus vite que la suite (M n ) <strong>de</strong> <strong>Mersenne</strong> .Ainsi, M 8 = 255 et L 7 = 4023861667741036022825635656102100994 .Heureusement, pour tester si M n est premier, il n'est pas nécessaire <strong>de</strong> calculer explicitement L n 1 ;il suft simplement <strong>de</strong> vérier si sa classe résiduelle modulo M n est nulle . D'où la procédure suivante :2> isprimeM:=proc(n) local k,L,M;L:=4; M:=2^n-1;6for k from 2 to n-1 do L:=L^2-2 mod M od;4evalb(L=0);end:Testons la primalité <strong>de</strong> M 2281 (son écriture décimale est constituée <strong>de</strong> 687 chiffres) :2> t:=time(): isprimeM(2281); 'Temps_<strong>de</strong>_calcul'=time()-t;64trueTemps_<strong>de</strong>_calcul = 2.046Comparons le résultat avec celui fourni par la fonction isprime standard :2> t:=time(): isprime(2^2281-1); 'Temps_<strong>de</strong>_calcul'=time()-t;64trueTemps_<strong>de</strong>_calcul = 4.547Une simple boucle montre alors que parmi les 1000 plus petits <strong>nombres</strong> <strong>de</strong> <strong>Mersenne</strong>, 14 sont <strong>premiers</strong> :2> t:=time(): LMP:='M'[2]:for n from 3 by 2 to 1000 doif isprimeM(n) then LMP:=LMP,'M'[n] fi: od:[LMP]; 'Temps_<strong>de</strong>_calcul'=time()-t;64[M 2 ; M 3 ; M 5 ; M 7 ; M 13 ; M 17 ; M 19 ; M 31 ; M 61 ; M 89 ; M 107 ; M 127 ; M 521 ; M 607 ]Temps_<strong>de</strong>_calcul = 27.766Rappelons que le critère <strong>de</strong> Lucas-Lehmer ne s'applique qu'à partir <strong>de</strong> n = 3 .On a testé ici toutes les valeurs impaires <strong>de</strong> n . On pourrait sensiblement accélérer le calcul en ne testantque les valeurs premières <strong>de</strong> n mais on a préféré ne pas recourir à la fonction isprime standard .Ghislain.Dupont@univ-lemans.fr 3 / 5 Département <strong>de</strong> Mathématiques

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!