1) Числа a, которые становятся свидетелями простоты, могут быть любыми (от 2 до n) или же только простыми
ГуглИИ:
Цитата:
В качестве базы

можно выбирать как простые числа (например, 2, 3, 5), так и составные (например, 4, 6, 9).
На практике обычно проверяют, чтобы наибольший общий делитель

. Если вдруг

, то мы мгновенно находим делитель числа n, и тест можно даже не продолжать — число n гарантированно составное.
Из

мгновенно следует что проверять достаточно лишь простые a, составные а имеют в своём составе меньшие простые и такие делители найдутся раньше составного при проверке начиная с меньших а.
2) Число r может быть равно нулю, или оно может быть только от 1 до s-1 (s это количество двоек в разложении n-1)?
Видите левое условие на

? Если

, то

, т.е.

делится на

. Вполне возможно такое.
3) Правильно ли я понял, что надо перебирать все варианты r от 0 (или там от 1) до s-1, и если хотя бы раз сработает

, то значит a это свидетель простоты n?
Да.
Потому что если ни для одного

условие не сработало (и не сработало

), то такое a будет свидетелем составного числа n (и оно точно составное).
4) Соответственно, если n-1 нечётное, то есть s=0, то вторая проверка не проводится? Хотя я вроде уже понял что ответ тривиален - если n-1 нечётное значит n составное - но чисто с формальной точки зрения вопрос.
Ну можно и провести для

(и даже может получиться что такое a будет свидетелем простоты), но толку-то, мы же и так уже знаем что n составное, зачем делать лишнюю работу.