Решето Эратосфена в JavaScript
Дано число n (n > 1). Выведите строку, состоящую из простых чисел, меньших n. Воспользуйтесь решетом Эратосфена. Единицу не считаем простым числом.
function testCycle(n) {
var array = [];
var tmpArray = [];
var maxPrimeFactor = 0;
var upperLimit = Math.sqrt(n);
var output = [];
for (var i = 2; i < n; i++) {
array.push(i);
}
for (var i = array[0]; i < upperLimit; i = array[0]) {
removeMultiples: for (var j = i, k = i; j < n; j += i) {
var index = array.indexOf(j);
if (index === -1)
continue removeMultiples;
else
array.splice(index, 1);
}
tmpArray.push(k);
}
array.unshift(tmpArray);
return array.join(' ');
}
к примеру, если n = 27, то выводит 2,3,5 7 11 13 17 19 23
Почему первые числа с запятой?
Ответы (1 шт):
Автор решения: Денис Степанов
→ Ссылка
function filter(number) {
let arr = Array.from({length: number - 1}, (_, i) => i + 2);
function helper(arr) {
if (!arr[0] || arr[0] ** 2 > number) {return arr}
return [arr[0], ...helper(arr.filter((element) => element % arr[0]))];
}
return helper(arr);
}
console.log(filter(10).join(' '));
console.log(filter(20).join(' '));
console.log(filter(100).join(' '));
console.log(filter(1000).join(' '));