access-nsieve.js 907 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // The Great Computer Language Shootout
  2. // http://shootout.alioth.debian.org/
  3. //
  4. // modified by Isaac Gouy
  5. function pad(number,width){
  6. var s = number.toString();
  7. var prefixWidth = width - s.length;
  8. if (prefixWidth>0){
  9. for (var i=1; i<=prefixWidth; i++) s = " " + s;
  10. }
  11. return s;
  12. }
  13. function nsieve(m, isPrime){
  14. var i, k, count;
  15. for (i=2; i<=m; i++) { isPrime[i] = true; }
  16. count = 0;
  17. for (i=2; i<=m; i++){
  18. if (isPrime[i]) {
  19. for (k=i+i; k<=m; k+=i) isPrime[k] = false;
  20. count++;
  21. }
  22. }
  23. return count;
  24. }
  25. function sieve() {
  26. var sum = 0;
  27. for (var i = 1; i <= 3; i++ ) {
  28. var m = (1<<i)*10000;
  29. var flags = Array(m+1);
  30. sum += nsieve(m, flags);
  31. }
  32. return sum;
  33. }
  34. var result = sieve();
  35. var expected = 14302;
  36. if (result != expected)
  37. throw "ERROR: bad result: expected " + expected + " but got " + result;