Можно убедиться, что программа работает для A,B таких, что B-A не очень велико.
Для альтернативного способа можно предложить использование метода "решето Эратосфена", но не объяснять как его реализовать эффективно.
Возьмет описание из интернета:
Для нахождения всех простых чисел не больше заданного числа n, следуя методу Эратосфена, нужно выполнить следующие шаги:
-
Выписать подряд все целые числа от двух до n (2, 3, 4, ..., n).
-
Пусть переменная p изначально равна двум — первому простому числу.
-
Зачеркнуть в списке числа от 2p до n, считая шагами по p (это будут числа, кратные p: 2p, 3p, 4p, ...).
-
Найти первое незачёркнутое число в списке, большее чем p, и присвоить значению переменной p это число.
-
Повторять шаги 3 и 4, пока возможно.
Возможно ученик его реализует "дословно". Приведем примерное решение.
Программа sieve0(A,B) получает границы полуинтервала [A, B) и
возвращает список из B элементов, таких что: B[p] = 1 если p - простое и 0 -в противном случае