prime.js 883 B

1234567891011121314151617181920212223242526272829303132
  1. // prime.js
  2. // Pure Ecmascript version of low level helper
  3. function primeCheckEcmascript(val, limit) {
  4. for (var i = 2; i <= limit; i++) {
  5. if ((val % i) == 0) { return false; }
  6. }
  7. return true;
  8. }
  9. // Select available helper at load time
  10. var primeCheckHelper = (this.primeCheckNative || primeCheckEcmascript);
  11. // Check 'val' for primality
  12. function primeCheck(val) {
  13. if (val == 1 || val == 2) { return true; }
  14. var limit = Math.ceil(Math.sqrt(val));
  15. while (limit * limit < val) { limit += 1; }
  16. return primeCheckHelper(val, limit);
  17. }
  18. // Find primes below one million ending in '9999'.
  19. function primeTest() {
  20. var res = [];
  21. print('Have native helper: ' + (primeCheckHelper !== primeCheckEcmascript));
  22. for (var i = 1; i < 1000000; i++) {
  23. if (primeCheck(i) && (i % 10000) == 9999) { res.push(i); }
  24. }
  25. print(res.join(' '));
  26. }