4
Observons ce qui se passe exactement dans la boucle i (ligne 2) : i reste le même pendant que k
parcourt sa boucle (ligne 3). Ainsi, le produit i . k prend successivement les valeurs
i², i(i+1), i(i+2)...
Au moment où la boucle k est terminée, plus aucun multiple de i ne figure dans le tableau. Mais il en va
de même pour tous les multiples des nombres inférieurs à i, puisqu’ils ont déjà été supprimés de la même
façon.
Que se passe-t-il si i n’est pas un nombre premier ? Prenons par exemple i = 4. Le produit i . k parcourt les
valeurs 16, 20, 24... On constate que ces nombres sont tous aussi des multiples de 2, étant donné que 4 est
lui-même un multiple de 2. De ce fait, aucun calcul n’est nécessaire pour i = 4. Et il en va de même pour
tous les autres nombres pairs i > 4.
Prenons l’exemple i = 9. Le produit i . k parcourt seulement des multiples de 9. En tant que multiples de 3,
ils ont déjà été considérés, il est donc inutile de les parcourir à nouveau. Le cas de figure est le même avec
tous les nombres qui ne sont pas premiers, car ils ont un diviseur premier plus petit qu’eux, qui
représentait avant eux une valeur de i. Nous avons donc besoin de parcourir la boucle k seulement lorsque
i est un nombre premier.
Comment savoir si i est un nombre premier ou non ? Le tableau lui-même pourrait nous l’indiquer – si il
était déjà terminé. C’est seulement après avoir terminé l’exécution de l’algorithme que nous pouvons être
certains qu’il reste seulement des nombres premiers dans le tableau. Jusqu’ici, vous êtes d’accord ?
Eh bien, oui et non. En général, oui, car sinon nous pourrions abréger l’algorithme. Or cela n’est pas
toujours possible. Prenons par exemple n = 100 : le nombre non premier 91 doit être à un moment ou à un
autre supprimé du tableau. Il est produit juste avant la fin, il correspond en effet à i = 7, k = 13.
Dans notre cas précis, non, car nous ne cherchons pas à trouver n’importe quel nombre premier, mais à
déterminer si un nombre en particulier, le nombre i, est premier. Et ce, pas à n’importe quel moment, mais
plutôt au début de la boucle k pour la valeur i. Ici, le tableau nous donne une bonne information !
Pourquoi ?
Nous avions observé plus haut que pour chaque valeur de i, toutes les valeurs i . k supprimées sont telles
que i . k ≥ i². Autrement dit : dans la suite 2, ..., i² - 1, rien n’est modifié. Étant donné que i ne fait
qu’augmenter dans le temps, cette suite augmente aussi et comprend toutes les suites formées avant elle.
Sur le schéma suivant, ces suites sont encadrées :
Comme plus aucun changement n’apparaît dans ces suites jusqu’à la fin de l’algorithme, elles doivent
être déjà correctes avant le passage de la boucle k pour le i que l’on considère. Le tableau est pour ainsi
dire prêt en quatre étapes. Ce qui est à gauche est la valeur i dont nous souhaitons vérifier la qualité de
nombre premier. On constate qu’elle est toujours dans une zone encadrée. Pour décider si i est un nombre