Skip to content

Instantly share code, notes, and snippets.

@borisschapira
Created December 19, 2013 15:13
Show Gist options
  • Save borisschapira/8040691 to your computer and use it in GitHub Desktop.
Save borisschapira/8040691 to your computer and use it in GitHub Desktop.
Calcul des nombres premiers inférieurs à 200
if (!premiers)
var premiers = [];
function PremiersInferieursA(maxNumber, fromNumber) {
if (!fromNumber)
fromNumber = 0;
function estPremierSachantInferieursTestes(n) {
// Si on l'a déjà testé, on sait
if (premiers.indexOf(n) > 0)
return true;
// 0 n'est pas premier
if (n == 0)
return false;
// 1 et 2 sont premiers
if (n <= 2) {
premiers.push(n);
return true;
}
// Au delà, un nombre est premiers s'il n'est pas
// divisible par un nombre premier plus petit, sauf 1 bien sûr
// Pas la peine de tester les diviseurs supérieurs
// à la racine du nombre à tester, donc on ne va tester
// que les diviseurs premiers inférieurs à la racine
var maxTest = Math.ceil(Math.sqrt(n));
var premiersFiltre = [];
for (var i = 0; i < premiers.length; i++) {
if (premiers[i] > 1 && premiers[i] <= maxTest)
premiersFiltre.push(premiers[i]);
};
for (var i = 0; i < premiersFiltre.length; i++) {
if (n % premiersFiltre[i] == 0)
return false;
}
// Si on arrive jusqu'ici, le nombre est premier
premiers.push(n);
return true;
}
if (fromNumber < maxNumber) {
estPremierSachantInferieursTestes(fromNumber);
fromNumber++;
PremiersInferieursA(maxNumber, fromNumber);
}
return premiers;
}
window.addEventListener("load", function () {
console.dir(PremiersInferieursA(200));
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment