
fi; 
compt; 
end:
> Z:=petitsPremiers2(500):
> seq(premier[i],i=1..Z);
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97, , , , , , , , , , , , , , , , , , , , , , , , ,
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191, , , , , , , , , , , , , , , , , ,
193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283, , , , , , , , , , , , , , , , , ,
293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401, , , , , , , , , , , , , , , , , ,
409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499, , , , , , , , , , , , , , ,
Question 4: Crible d'Erathostène
La procédure proposée suit exactement le principe du crible d'Erathostène. On met en évidence 
les multiples d'un entier r donné (qui ne sont donc pas premiers) en affectant la valeur 1 à 
Tab[ir].
> petitsPremiers3:=proc(n) 
local Tab,k,i,r,s ; 
global premier; 
Tab:=array[2..n];for k from 2 to n do Tab[k]:=0;od;             
# initialisation du tableau  
i:=1; 
while i <= n do  
    s:=i+1; while Tab[s]=1 do s:=s+1;od;                        
# Recherche de l'entier premier suivant i 
    i:=s; 
   r:=2; 
    while i*r<= n do  Tab[i*r]:=1; r:=r+1;od;                   
# suppression des multiples de i 
             od; 
s:=1; for k from 2 to n do if Tab[k]=0 then premier[s]:=k; 
s:=s+1;fi;od; 
s-1;end:  
> Z:=petitsPremiers3(200):
> seq(premier[k],k=1..Z);
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97, , , , , , , , , , , , , , , , , , , , , , , , ,
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191, , , , , , , , , , , , , , , , , ,
193 197 199, ,
Question 5: Factorisation d'un entier
Mise en place de l'algorithme proposé dans l'énoncé.
> factoriser:=proc(n) 
local N,i,j,p,m;   
global premier, facteur; 
petitsPremiers3(n);