Решето Эратосфена работает так:
https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D...
И его работа не зависит от того, на каком языка вы его пишете.
Первый цикл for-внутри-do-while отмечает как НЕпростые все числа, которые получаются перемножением i и p
Второй цикл for-внутри-do-while проверяет не является ли простым текущее значение i, и если оно простое, завершает свою работу. При этом do-while перезапускается, но уже с новым значением p.
Условие
while (p * p < 100)
можно оптимизировать так:
while (p < 10)
Добавил флуда в консоль, чтоб было понятнее что происходит:
https://jsfiddle.net/L1ahatbk/