s o i t g l a p a r t i e gauche de t
s o i t d l a p a r t i e d r o i t e de t
FOURIER( g ) ;
FOURIER( d ) ;
pour i dans [ 0 , n /2 ] f a i r e
j := i + n /2
tmp := t [ j ]
t [ i ] := t [ i ] −tmp
t [ j ] := t [ j ] −tmp
f i p
f i n
2. Calculer la tranform´ee de Hadamard-Fourier de la table
0,1,2,3,4,5,6,7
0 1 2 3 4 5 6 7
1 -1 5 -1 9 -1 13 -1
6 -2 -4 0 22 -2 -4 0
28 -4 -8 0 -16 0 0 0
Q 7. La figure [2] rapporte sur le temps de calcul d’un test de primalit´e de Fermat
appliqu´e au n-i`eme nombre de Fermat Fn= 22n+ 1.
1. Commenter le grahique.
Le temps de calcul est cubique en la taille des entiers.
2. Estimer le temps de calcul pour F13.
Notons Tle temps de calcul en fonction de la taille, F13 est de taille 213, d’apr´es le
graphique :
T(213) = 512 ×T(210)∼10240s
soit de l’ordre de 3 heures.
Q 8. Pour un entier n, on note π(n) le nombre de nombres premiers strictement inf´erieurs
`a n. L’algorithme du crible d’Eratost`ene est un proc´ed´e efficace pour d´eterminer tous les
nombres premiers inf´erieurs `a un entier donn´e n. On utilise une table tde nbool´eens
initialis´es `a 0, sauf t[0] = 1 et t[1] = 1. L’algorithme proc`ede par ´elimination en √n
´etapes. A l’´etape i, si t[i] = 0 c’est que iest premier, et, on marque “compos´e” les entiers
multiple de i:t[2i] = 1, t[3i] = 1, . . ., t[ij] = 1. A la fin de ce processus, les les entiers
premiers correspondent aux cellules marqu´ees 0.
On rappelle que la s´erie harmonique : Hn=Pn
i=1
1
iv´erifie la relation Hn∼ln n.
1. Utiliser le crible pour d´etermin´e π(100).
π(100) = 25.
2. Ecrire une fonction int pi( int n ) qui retourne π(n).
int pi ( int n )
{int r = 0 ;
int i , j , ∗t = c a l l o c ( n , 1 ) ;
for( i = 2 ; i ∗i<=n ; i++ )
i f ( ! t [ i ] )
for( j = i ∗2; j <n ; j+=i )
t [ j ] = 1;
for( i = 2 ; i <n ; i++ )
t += t [ i ] ;
return n−r ;
}
3