Простые числа от 1 до n
Застрял на задачке. Нужно вывести простые числа от 1 до заданного числа. У меня выводится только последнее число:
const getPrimes = n => { let isPrime; for (let i = 1; i <= n; i++) { for (let j = 1; j <= i; j++) { if (i % j !== 0) { isPrime = j; } } } return isPrime; } console.log(getPrimes(12)); |
Цитата:
|
Как вариант...
const n = 10 const a = [] for (let i = 2; i <= n; i++) { let ok = true for (let j = 0; j < a.length; j++) { if (i % a[j] === 0) { ok = false break } } if (ok) a.push(i) } alert(a) |
Цитата:
|
нужно проверить от 1 до n. Если в ваш код поставить let i = 1, то работать не будет
|
аа...тогда в j тоже поставить 1 и работает)
|
и без флага let ok = true, никак нельзя?
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
ребята, а можно мастер-класс? Сможете решить это с помощью метода reduce?)
const getPrimes = n => { const a = []; for (let i = 1; i <= n; i++) { let ok = true; for (let j = 1; j < a.length; j++) { if (i % a[j] === 0) { ok = false; } } if (ok === true) a.push(i); } return a; } |
Цитата:
const getPrimes = n => { const a = []; lab: for (let i = 1; i <= n; i++) { for (let j = 1; j < a.length; j++) { if (i % a[j] === 0) { continue lab; } } a.push(i); } return a; } https://learn.javascript.ru/while-fo...break-continue |
Цитата:
lab: |
по ссылке, которую вы дали, не нахожу чтобы понять что такое метка lab; и как оно работает
|
Цитата:
|
Цитата:
|
:) :write:
const getPrimes = length => { return Array.from({ length }, (_, i) => ++i).reduce((a, b) => { let max = Math.floor(Math.sqrt(b)); if (a.slice(1, max).every(e => b % e)) a.push(b); return a }, []) } console.log(getPrimes(120)) |
Цитата:
|
Часовой пояс GMT +3, время: 15:39. |