Задать вопрос
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);

Что делает этот код: тык
  • Вопрос задан
  • 251 просмотр
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
Решения вопроса 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 не подох.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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