Bonjour,
Étant un fervent adepte du projet GIMPS www.mersenne.org depuis 2009
j'ai décidé récemment d'avoir mon propre programme permettant de rechercher ces fameux nombres de Mersenne premiers, pour inscrire mon nom dans l'histoire des maths ........................ c'est pas gagné
L'algorithme de Lucas-Lehmer (LL) permettant de les rechercher étant très simple dans son énoncé
voici le pseudo-code de cet algo
Code :
- soit p un nombre entier premier
- soit NM = 2^p - 1 un nombre de Mersenne
- et S(0) = 4 le 1er élément d'une suite
- pour i vaut 1 jusqu’à p-2
- {
- S(i) = (S(i-1)^2 - 2) modulo NM
- }
- si S(p-2) == 0 alors
- NM est premier
- sinon
- NM est composé
|
Toute la difficulté réside dans l'implémentation de cet l'algo
Les nombres étant de très grande taille, il faudra trouver un moyen de les représenter en mémoire.
Il faudra aussi implémenter de manière efficace les opérateurs mathématiques permettant de les manipuler (^, - et modulo)
Le carré étant une simple multiplication.
et le modulo est une division euclidienne dont seul le reste nous intéresse.
Pour la multiplication nous aurons le choix entre les différents algorithmes
- approche naïve (multiplication scolaire)
- algorithme récursif de Karatsuba (et sa généralisation: algorithme de Toom-Cook)
- algorithme de multiplication par transformée de Fourier rapide (algorithme de Schönhage-Strassen)
Pour la division nous aurons les algorithmes étudiés dans cette page (1)
j'ai choisi en premier :
- l'algorithme binaire dichotomique (bornage binaire du quotient puis recherche par dichotomie)
Voila pour l'introduction,
j'ai déjà un programme (lent) qui fonctionne
Il faut environ 13 minutes et 50 secondes pour prouver que 2^2203-1 est premier,
Je suis entrain d'essayer de booster la division par un autre algo.
Voila, je voudrais savoir si ça intéresse du monde ...
Sources:
http://fr.wikipedia.org/wiki/Nombr [...] ne_premier
Multiplication: http://fr.wikipedia.org/wiki/Algor [...] iplication
Algo de Karatsuba: http://zanotti.univ-tln.fr/enseignement/I51/TP11.html
(1) Division: http://compoasso.free.fr/primelist [...] uclide.php
Message édité par Caffrey's le 29-11-2014 à 11:18:55