summaryrefslogtreecommitdiffstats
path: root/src/civetweb/test/prime.ssjs
blob: 6dc3243a740c622e5cdc4028444b8bebf3007c40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// prime.js

// Pure Ecmascript version of low level helper
function primeCheckEcmascript(val, limit) {
    for (var i = 2; i <= limit; i++) {
        if ((val % i) == 0) { return false; }
    }
    return true;
}

// Select available helper at load time
var primeCheckHelper = (this.primeCheckNative || primeCheckEcmascript);

// Check 'val' for primality
function primeCheck(val) {
    if (val == 1 || val == 2) { return true; }
    var limit = Math.ceil(Math.sqrt(val));
    while (limit * limit < val) { limit += 1; }
    return primeCheckHelper(val, limit);
}

function primeTest() {
    var res = [];

    print('Have native helper: ' + (primeCheckHelper !== primeCheckEcmascript) + '\n');
    for (var i = 2; i <= 1000; i++) {
        if (primeCheck(i)) { res.push(i); }
    } 
    print(res.join(' '));
}

print = this.send || conn.write

print('HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\n');

primeTest();