Nombre de Fermat
5 d´ ecembre 2013
R´esum´e
L’objectif de ce sujet de travaux-pratiques est d’implanter le test de pseudoprimalit´e de Fermat pour deviner le caract`ere premier ou compos´e des premiers nombres de Fermat !
On repr´esente des nombres par des tableaux de chiffres binaires, les calcul faits sur des registres de taille d´efinie `a l’ex´ecution.
typedef unsigned char c h i f f r e ; typedef c h i f f r e ∗ nombre ; unsigned i n t t a i l l e ; void i n i t ( u i n t t ) ;
On pourra par exemple manipuler un module global : nombre module ;
void b i t ( u i n t i ) ;
Vous pouvez utiliser le fichier de d´efinition modular.h.
wget l a n g e v i n . univ−t l n . f r / c o u r s /PAA/ t p s / f e r m a t / modular . h
1 Arithm´ etique
Implanter la multiplication modulaire des entiers binaires en utilisant la m´ethode d’addition-duplication.
void mult ( nombre y , nombre x ) ; // y := ( x ∗ y ) % module
2 V´ erification
V´erifier le bon fonctionnement en utilisant le th´eor`eme de Wilson qui affirme quepest premier si et seulement si :
(p−1)!≡ −1 (modp)
1
3 Application
Implanter le test de pseudoprimalit´e de Fermat, pour l’appliquer `a la suite des nombres de FermatFn = 22n+ 1 pourn= 1, 2, 3, etc. . .
TEST de FERMAT ( m ) x := r e s i d u a l e a t o i r e n := m− 1
y := x ˆ n modulo m r e t o u r n e r y == 1
On consid`ere un nombre Fermat-premier quand il passe 50 fois le test ci- dessus. Pour cet exercice, vu la forme des nombres de Fermat, il n’est pas n´ecessaire d’implanter une exponentiation modulaire !
4 Temps de cacul
Donner une formule du temps de calcul pour r´ealiser un test sur len-i`eme nombre de Fermat. Estimer le temps de calcul pour testerF33.
5 Multipr´ ecision
Faire un travail analogue avec la calculettebc, puis la bibilioth`equegmp.
2