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