Решил я тут вычислить первые 10000 простых чисел.
Пошёл по самому простому пути (что первое в голову пришло, то и написал).
Сравнил полученные числа с таблицой простых чисел и понял, что что-то ЯВНО делаю не так ведь: 13*13= 169, а это не простое число
Как тогда вычислить все простые число до 10000?

С простыми числами у меня проблем никогда не возникало. Обошелся даже без старины Эратосфена
arr = [];
for (var n = 0; n < 100; n++) {
test = true;
for (var i = n - 1; i > 1; --i) {
if (n % i == 0) {
test = false;
break;
}
}
if(test) {arr.push(n)}
}
console.log(arr)
>Как вычислять простые числа?
При помощи решета Эратосфена.
>Сравнил полученные числа с таблицой простых чисел и понял, что что-то ЯВНО делаю не так
Ну, судя по твоему коду, после 11 простые числа заканчиваются, так что ты ВСЕ делаешь не так.
const isPrime = (num) => {
let prime;
if (num <= 5 && (num <= 2 || num == 3 || num == 5)) prime = true;
else if (~num & 1 || 0 == num % 3 || 0 == num % 5) prime = false;
else {
let n;
for (n = 3; n * n <= num && num % n; n += 2) { ; }
prime = n * n > num? true : false;
}
return prime;
}
let str = "";
for (let n = 1; n < 10000; n += 1) if (isPrime(n)) str += n + "<br>";
document.write(str);
Логика простая. Определяешь простоту чисел последовательно от 2 до n. Каждое число делишь на до сих пор известные простые числа. Если не делится ни на одно, значит нашел ещё простое число и добавляешь его в список.
Иногда проще показать на примере, чем объяснять как это делать.

А это для чего?) Как-раз выгоднее начинать с i = 2, значительная часть чисел отсеится на первых итерациях.
А от n - 1 до i = √n все итерации всегда будут давать false