Created
December 19, 2013 15:13
-
-
Save borisschapira/8040691 to your computer and use it in GitHub Desktop.
Calcul des nombres premiers inférieurs à 200
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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