Nombres de Mersenne

Eric Wegrzynowski

Les nombres de Mersenne sont les nombres de la forme

[Maple Math]

n est un entier positif. Ce sont en particulier des nombres dont l'écriture en base 2 est constituée de n chiffres 1 (on les appelle des repunits en base 2).

Certains de ces nombres sont premiers (on les appelle alors nombres premiers de Mersenne). C'est le cas lorsque [Maple Math] :

> M := 2^n-1:

> seq(M,n=[2,3,5,7]);

[Maple Math]

On connait actuellement 37 nombres premiers de Mersenne. Le plus grand d'entre eux est d'ailleurs le plus grand nombre premier connu aujourd'hui. Il s'agit de

[Maple Math]

dont l'écriture en base 10 comprend 909526 chiffres. Il a été découvert en janvier 1998.

Une condition nécessaire pour qu'un nombre de Mersenne soit premier est que l'exposant n soit lui meme premier. En effet, si l'exposant n n'est pas premier et est le produit de deux entiers p et q , alors [Maple Math] est divisible par [Maple Math] et par [Maple Math] .

Il existe un test performant pour vérifier si un nombre de Mersenne est premier : le test de Lucas-Lehmer. Ce test s'appuie sur une condition nécessaire et suffisante de primalité de [Maple Math] :

[Maple Math] est premier si et seulement si il divise le terme [Maple Math] de la suite définie par

[Maple Math]

[Maple Math]

> lucas := proc(n)

> local M,L,k;

> M := 2^n-1;

> L := 4;

> for k from 2 to n-1 do

> L := (L^2 - 2) mod M;

> od;

> evalb(L=0);

> end:

Quelques vérifications de primalité de nombres de Mersenne (avec temps de calculs sur Pentium II 400 Mhz)

Les résultats affichés indiquent dans l'ordre : le nombre de chiffres du nombre de Mersenne concerné, le résultat du test de Lucas, le temps de calcul en secondes.

> n := 2281: length(M); debut := time(): lucas(n); time()-debut;

[Maple Math]

[Maple Math]

[Maple Math]

> n := 3217: length(M); debut := time(): lucas(n); time()-debut;

[Maple Math]

[Maple Math]

[Maple Math]

> n := 4253: length(M); debut := time(): lucas(n); time()-debut;

[Maple Math]

[Maple Math]

[Maple Math]

> n := 4423: length(M); debut := time(): lucas(n); time()-debut;

[Maple Math]

[Maple Math]

[Maple Math]

> n := 9689: length(M); debut := time(): lucas(n); time()-debut;

[Maple Math]

[Maple Math]

[Maple Math]