TheSnegok
@TheSnegok

Как оптимизировать код?

Код написан для решения 10 задачи Эйлера, но мне кажется очень долго работает, пытался уже сделать отдельную функцию для простого числа, результата особо не дало, подскажите как можно оптимизировать код?
const sumNumbers = (maxNumber) => {
    console.time();
    let answer = 0, i = 2;
    next:for(i;i < maxNumber;i++) {
        for(let j = 2; j < i; j++) {
            if(i % j == 0) continue next;
        }
        answer = answer + i;
    }
    return console.log(answer);
    console.timeEnd();
}

sumNumbers(2000000);

Что делает этот код: тык
  • Вопрос задан
  • 247 просмотров
Решения вопроса 2
Alexandroppolus
@Alexandroppolus
кодир
function sumNumbers(maxNumber) {
    const buf = new Int8Array(maxNumber);
    let answer = maxNumber > 2 ? 2 : 0;
    for(let i = 3; i < maxNumber; i += 2) {
        if (buf[i] === 1) {
            continue;
        }
        answer += i;
        const i2 = i * 2;
        for(let j = i * i; j < maxNumber; j += i2) {
            buf[j] = 1;
        }
    }
    
    return answer;
}
Ответ написан
profesor08
@profesor08 Куратор тега JavaScript
Простые числа это не что-то магическое, они вполне себе известны. Можно просто взять нужный диапазон и работать с ним. Нет нужды каждый раз их генерировать.



P.S. Так как список чисел довольно большой, запихнул его как текст в HTML, чтоб парсер js не подох.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы