Nombres premiers

retour

Qu'est ce qu'un nombre premier ?

Un nombre premier est un nombre entier dont la division entière par un autre entier ne donne un reste nul que si le diviseur est 1 ou lui-même. Un nombre premier n'est donc pas décomposable en un produit d'entiers. 1 n'est pas considéré comme entier.

Ex : 2, 3, 5 ,7, 11 sont premiers;
4, 6, 8, 9, 10 ne sont pas premiers (4 = 2 * 2, 6 = 2 * 3 ...)

Une fonction pour savoir si un nombre est premier ou non

Cette fonction est ici écrite de façon à ce qu'elle rende VRAI si le nombre est premier et FAUX sinon.

ATTENTION : elle ne vérifie pas que le nombre tapé est supérieur strictement à 1, entier.

1° méthode :

function analyse(z)

{ var i=2,fin=true;
while (fin && i< z) {if ((z % i)== 0) {fin=false} else {i++}; };
return fin; }

Le nombre est testé pour les différents diviseurs entiers depuis 2 jusqu'au nombre lui-même moins 1. Le test consiste à savoir si la division entière du nombre à tester par le diviseur donne un reste nul (le nombre n'est pas entier) ou non (le nombre est peut être entier).

La variable booléenne fin prend la valeur false si le nombre est non premier. Le test est aalors arrêté puisqu'il suffit d'un diviseur du nombre pour démontrer que le nombre n'est pas premier. On évite ainsi des tests inutiles donc on accélère le test. La combinaison des conditions avec i<z est indispensable pour que l'incrémentation du diviseur (i) se fasse.

2° méthode (optimisation) :

function analyse2(z)

{ var i=2,fin=true;
if (z==2) {return fin}
else { if ((z % 2)== 0) {return false}
else {i++; while (fin && i < z) {if ((z % i)== 0) {fin=false} else {i=i+2}; }; return fin; } } }

Le fonctionnement de la fonction est simialire quant à l'algorithme utilisé.
L'optimisation porte sur l'élimination immédiate des nombres pairs, divisant par deux le nombre de tests à faire : remarquez l'incrémentation de 2 au lieu de 1 de i.

-------------------------------------------------------


Éditer les n premiers nombres premiers