Bonsoir,
Je ne sais pas vraiment si vous pouvez m'aider, mais je tente quand meme :
Voici un programme Mapple donnant le n-ième nombre premier Pn, que je n'arrive pas très bien à comprendre. Serait-ce possible de me l'expliquer brièvement ?
>Premier:=proc(n)
local p,k,d;
if n=1 then 2
else
p:=1;k:=1;
while k<>n do
p:=p+2;d:=2;
while (d*d<=p) and (p mod d <> 0 ) do
d:=d+1;
od;
if d*d>p then k:=k+1;
fi;
od;
p;
fi;
end;
Merci
Bonsoir Ruilae
Déjà, si n=1, le programme donne 2, c'est normal !
Ensuite, si n est différent de 2, ce programme s'appuie sur plusieurs résultats :
1) n est nécessairement un entier impair donc c'est pour ça que l'entier p dont on teste la primalité augment de 2 en 2.
2) un entier non premier supérieur à 2 a nécessairement un diviseur qui est plus petit que ( c'est pour ça que la boucle while s'arrête dès que d² est supérieur).
Au pire, l'entier d parcourt l'ensemble des entiers compris entre 1 et .
En clair, l'entier p est premier si seulement s'il n'admet aucun diviseur entre 2 et .
L'entier k correspond à un compteur qui compte le nombre de nombre premier que l'on a déjà trouvé et on lui rajoute 1 dès qu'on en trouve 1 de plus.
Dès que k=n, on a trouvé le n-ième nombre premier : le programme s'arrête et retourne le résultat.
Kaiser
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :