Skip to content

Instantly share code, notes, and snippets.

@bl4de
Last active December 17, 2015 08:19
Show Gist options
  • Save bl4de/5579388 to your computer and use it in GitHub Desktop.
Save bl4de/5579388 to your computer and use it in GitHub Desktop.
Siege of Eratostenes - JavaScript algorithm (working :P )
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<div id="siege"></div>
<script>
// siege of Eratostenes
//
// other methods: http://www.wikihow.com/Check-if-a-Number-Is-Prime
//
// bl4de bloorq@gmail.com
var SCOPE = 100000,
arr = [],
primes = [],
i = 0,
first = 2;
for ( i; i < SCOPE; i++ ) {
arr[i] = first++;
}
var min = arr[0];
console.time("siege");
while ( min < Math.sqrt( SCOPE ) ) {
i = 0;
console.log("delete all multiple of " + min);
for (i; i < SCOPE; i++ ) {
if ( arr[i] != min && arr[i] % min === 0 ) {
arr[i] = 0;
}
}
// next min
for ( i =0; i < SCOPE; i++ ) {
if ( arr[i] > min ) {
min = arr[i];
break;
}
}
}
console.timeEnd("siege");
for ( i =0 ; i < arr.length; i++) {
if (arr[i] > 0) {
primes.push( arr[i] );
}
}
var siege = document.getElementById("siege");
siege.innerHTML = primes.toString();
</script>
</body>
</html>
@bl4de
Copy link
Author

bl4de commented May 14, 2013

Result: 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,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997

@bl4de
Copy link
Author

bl4de commented May 14, 2013

But it can be optimalized, I'm sure

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment