Как вам уже объяснили, ошибка тут
if (i % j !== 0){ //тут
b+=1
}
Но так как для вас она не очевидна объясню. Возмем ситуацию когда
i=6
и посмотрим как будет работать в данной ситуации внутренний цикл
for (let j = 2; j < i; j++) {
if (i % j !== 0){
b+=1
}
}
при
j = 2
условие не сработает (и это правильно)
при
j = 3
условие не сработает (и это правильно)
при
j = 4
условие сработает (и это НЕ правильно)
при
j = 5
условие сработает (и это НЕ правильно)
итого ваш алгоритм аж 2 раза посчитает что число 6 простое
думаю теперь вам станет понятней в чем ошибка и вы отметите ответы от
ThunderCat и
Олег как верные))))
ну и от себя добавлю - замените внутренний цикл на такой
for (let j = 2; j <= i/2; j++){
это в 2 раза уменьшит количество циклов. Почему это правильно предлагаю подумать самому))))