Образуются дыры в массиве

Нужно определить простые числа из диапазона. Простое число - это натуральное число, которое делится нацело только на 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;
}

Момент в том как работает clearComplicated. В этой функции j в присвоении array[j] = false; выходит за пределы массива. Недостающие элементы показываются как undefined. Вот отладочный код (логирую случаи когда происходит выход за пределы массива).

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) {
        if (j >= array.length) {
            console.log(array.length, j)
        }
        array[j] = false;
    }
    return array;
}
1 симпатия

Поменял в function clearComplicated в цикле
end на array.length