-
Notifications
You must be signed in to change notification settings - Fork 0
/
primes.js
33 lines (28 loc) · 1.01 KB
/
primes.js
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
"use strict";
const compare_positive = require("./compare_positive.js");
const divide = require("./divide.js");
const is_integer = require("./is_integer.js");
const long_addition = require("./long_addition.js");
/**
*
* @param {String} start - numerical string
* @param {String} end - numerical end
* @returns {Array.<string>} primes - array of prime numbers as strings
*/
function primes(start = "0", end = "100") {
const prime_single_digits = ["2", "3", "5", "7", "11"];
const results = prime_single_digits.filter(n => compare_positive(n, start) !== "<" && compare_positive(n, end) !== ">");
let num = "13";
while (compare_positive(num, end) !== ">") {
// don't even bother checking if ends with 5 or all one number
if (!(/^\d+5/.test(num) || /^(\d)\1+/.test(num))) {
if (["9", "7", "3"].every(digit => !is_integer(divide(num, digit)))) {
results.push(num);
}
}
num = long_addition(num, "2");
}
return results;
}
module.exports = primes;
module.exports.default = primes;