summaryrefslogtreecommitdiffstats
path: root/src/civetweb/test/prime.ssjs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:45:59 +0000
commit19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch)
tree42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/civetweb/test/prime.ssjs
parentInitial commit. (diff)
downloadceph-6d07fdb6bb33b1af39833b850bb6cf8af79fe293.tar.xz
ceph-6d07fdb6bb33b1af39833b850bb6cf8af79fe293.zip
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/civetweb/test/prime.ssjs')
-rw-r--r--src/civetweb/test/prime.ssjs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/civetweb/test/prime.ssjs b/src/civetweb/test/prime.ssjs
new file mode 100644
index 000000000..6dc3243a7
--- /dev/null
+++ b/src/civetweb/test/prime.ssjs
@@ -0,0 +1,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();