Algorithme de Fermat.
fonction Premier(N)
paramètre N: entier
à valeur: booléen
entier x, y, r
booléen OK
si N mod 2=0 alors OK ß FALSE
sinon x ß 1+2*[ÖN]
y ß1
rß[ÖN]²-N
tant que NOT (r=0) faire
si r>0 alors rßr-y
yßy+2
sinon rßr+x
xßx+2
fsi
ftant
OK ß x-y=2
fsi
résultat((N=2) ou OK)
tableau Tabi i=1,..,1000 de entier
entier i, j, NMAx
Nmax ß 1000
j ß 1
Tab1 ß 2
i ß 1
tant que NOT (j=NMax) faire
i ß i+2
si Premier(i) alors j ß j+1
Tabj ß i
fsi
ftant
pour i de 1 à NMax faire
écrire Tabi
fpour
Voici la traduction en Pascal de la fonction décrite ci-dessus:
FUNCTION Premier(N:WORD):BOOLEAN;
VAR x,y,r,N2: WORD;
OK:BOOLEAN;
BEGIN
IF N mod 2=0 THEN OK <-- FALSE
ELSE BEGIN
N2:=N;
N2:=SQRT(N2);
x:=1+2*TRUNC(N2);
y:=1;
r:=TRUNC(N2)*TRUNC(N2)-N;
WHILE NOT (r=0) DO
IF r<0 THEN BEGIN
r:=r+x;
x:=x+2
END
ELSE BEGIN
r:=r-y;
y:=y+2
END
OK <-- x-y=2
END;
Premier:= (N=2) ou OK
END;
Cliquez ici pour récupérer une archive contenant une implémentation en Delphi
de la décomposition d'un nombre entier par l'amgorithme de Fermat.