Так, я дибил - все просто: нам же просто надо проверить, составное число или нет.
Вот есть малая теорема Ферма: для всех простых
для любого
Для прозвольного нечетного
условие
необходимо, но не достаточно для того, чтобы
было простым. Т.е. если оно неверно, то
явно составное.
А если же
верно, то это довольно информативно: представим
, тогда, если
(что маловероятно), то мы будем вычислять
, на каком то шаге по условию мы получим 1, значит на предыдущем шаге мы получим нетривиальный квадратный корень из 1 по модулю
.
Т.е. квадратные корни мы ищем не для всех
, а только для таких, для которых
. Таких
грубо говоря мало. И вот только для таких
(а не для всех) если мы будем искать квадратные корни из
, мы найдем нетривиальный квадратный корень более чем в половине случаев. Видимо именно это имеется ввиду в SICP 1.28, хотя условие написано немного неявно. И это даже очевидно, почему: степень группы делит
, значит
, число нетривиальных квадратных корней будет равно
при
, а частота нетривиальных квадратных корней будет
.
В нашем примере
, таких
всего 2:
. И они сразу являются нетривиальным квадратными корнями, т.е. частота
З.Ы. В Василенко описан алгоритм Миллера. Это - другой алгоритм. Алгоритм Миллера-Рабина в нем - это теорема 1.55.