Простые числа от 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, время: 17:25. |