Нужно определить простые числа из диапазона. Простое число - это натуральное число, которое делится нацело только на 1 и на себя само (2, 3, 5, 7, 11, …).
В моем коде при некоторых значениях диапазона в массиве образуются дыры. Кто подскажет, как это исправить?
printSimple(7, 35);
function printSimple(begin, end) {
var simples = [],
substraction = end - begin;
for (var p = 0; p <= substraction; p++) {
simples[p] = true;
}
simples = clearAllComplicated(simples, begin, end);
console.log(simples);
}
function clearAllComplicated(array, begin, end) {
var simple = begin - 1;
while (true) {
simple = getMinimumSimple(simple + 1, end);
if (simple == 0 || simple >= end / 2) {
return array;
} else {
array = clearComplicated(array, simple, end);
}
}
}
function getMinimumSimple(begin, end) {
for (var s = begin; s <= end; s++) {
if (checkSimplicity(s)) {
return s;
}
}
return 0;
}
function checkSimplicity(n) {
for (var b = 2; b < n; b++) {
if (n % b == 0) {
return false;
}
}
return true;
}
function clearComplicated(array, coeficient, end) {
for (var j = coeficient * 2; j < end; j += coeficient) {
array[j] = false;
}
return array;
}