Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Простые числа от 1 до n (https://javascript.ru/forum/misc/84128-prostye-chisla-ot-1-do-n.html)

NovichokJS 08.06.2022 17:03

Простые числа от 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));

рони 08.06.2022 17:13

Цитата:

Сообщение от NovichokJS
У меня выводится только последнее число:

наверно нужен некий объект для сбора отфильтрованных чисел ...

ksa 08.06.2022 17:16

Как вариант...
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)

NovichokJS 08.06.2022 17:19

Цитата:

Сообщение от ksa (Сообщение 546017)
Как вариант...
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 искать, у вас от 2

NovichokJS 08.06.2022 17:21

нужно проверить от 1 до n. Если в ваш код поставить let i = 1, то работать не будет

NovichokJS 08.06.2022 17:22

аа...тогда в j тоже поставить 1 и работает)

NovichokJS 08.06.2022 17:25

и без флага let ok = true, никак нельзя?

ksa 08.06.2022 17:26

Цитата:

Сообщение от NovichokJS
так нужно от 1 искать

Тебя ввели в заблуждение... :)
Цитата:

Просто́е число́ — натуральное число, имеющее ровно два различных натуральных делителя.
https://ru.wikipedia.org/wiki/Простое_число

ksa 08.06.2022 17:26

Цитата:

Сообщение от NovichokJS
без флага let ok = true, никак нельзя?

Сделай без флага... Это ведь твоя задача. ;)

NovichokJS 08.06.2022 17:43

Цитата:

Сообщение от ksa (Сообщение 546023)
Сделай без флага... Это ведь твоя задача. ;)

буду пробовать, спасибо!


Часовой пояс GMT +3, время: 07:34.