Skip to content

Instantly share code, notes, and snippets.

@bl4de
Last active December 17, 2015 08:19
Show Gist options
  • Select an option

  • Save bl4de/5579388 to your computer and use it in GitHub Desktop.

Select an option

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

bl4de commented May 14, 2013

Copy link
Copy Markdown
Author

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

bl4de commented May 14, 2013

Copy link
Copy Markdown
Author

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