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);
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;
}
При этом ничего не мешает кешировать список простых чисел.
Так что на 2 миллиона разница всего в 2 раза, а обьём передаваемых данных отличается на порядки.
Каждый раз генерировать нет никакого смысла, все уже сгенерировано.
При этом памяти будет заниматься, независимо от количества прогонов, примерно одинаково с поправкой на внутреннее выделением чего-то там в самом js.
А так-же придется генерировать при каждом обновлении страницы.
А зачем тогда сжимают изображения, видео и т.д., если всё уже сгенерированно в высоком качестве?)
Ага, при этом по верхней границе, даже если нам нам нужна 10ая часть.
А что мешает сохранить массив в локалсторедже после генерации?
Вот как раз таки затем, чтоб не рисовать их в браузере, а передать готовое.
1mb для хранения данных будет занят. Зато подсчитывай сумму сколько хочешь.
Ну попробуй сохрани мегабайт в localstorage.
компрессия и декомпрессия затрачивает ресурсы?
Высчитывание всех простых с нуля это тоже своего рода сжатие.
Как и в случае высчитывания простых, если кэшировать результат. Причём можно кешировать ещё и результат.
Ты это серьёзно написал?
работает для всего, включена всегда. Ей занимается вебсервер и браузер в момент передачи информации.
При генерации, каждый раз при перезагрузке страницы, или открытия новой, будет выполняться поиск всех чисел заново.
5мб на все хранилище, а не на одну запись.
Ну попробуй сохрани мегабайт в localstorage.
При этом он будет скачан лишь один раз, а при последующих перезагрузках, он будет передаваться из кеша. При генерации, каждый раз при перезагрузке страницы, или открытия новой, будет выполняться поиск всех чисел заново.учитывая, что он генерится за доли секунды, вряд ли считывание из кэша (то есть с диска) будет намного быстрее. К тому же тут ещё затраты на парсинг раздутого html/js, что тоже не бесплатно.
В общем, ладно, я на это закончу, "Куратор тега JavaScript" ─ это уже клеймо некомпетентности, в который раз убеждаюсь.
фыркнуть и слиться
Сложность алгоритма составляет O(n * log(log (n))) операций при составлении таблицы простых чисел до n
☑ хлопать ушами
example1:
Alexandroppolus 1 times: 12.912ms
142913828922
mem: 0.6602020263671875MB
example2:
prof 1 times: 7.303ms
142913828922
mem: 1.8218231201171875MB
example1:
Alexandroppolus 1 times: 12.912ms
142913828922
mem: 0.6602020263671875MB
example2:
prof 1 times: 7.303ms
142913828922
mem: 1.8218231201171875MB
profesor08, какие ещё 7 минут 46 секунд? Решение Alexandroppolus на 2 миллиона тратит 15+-мс, да даже на 10 миллионов всего 90+-мс.
При этом ничего не мешает кешировать список простых чисел.
Так что на 2 миллиона разница всего в 2 раза, а обьём передаваемых данных отличается на порядки.