Так, я дибил - все просто: нам же просто надо проверить, составное число или нет.
Вот есть малая теорема Ферма: для всех простых
![$p$ $p$](https://dxdy-03.korotkov.co.uk/f/2/e/c/2ec6e630f199f589a2402fdf3e0289d582.png)
для любого
![$a^{p-1}\equiv 1\pmod p$ $a^{p-1}\equiv 1\pmod p$](https://dxdy-03.korotkov.co.uk/f/2/1/6/21605928fe12c292ac5e74304699cd3482.png)
Для прозвольного нечетного
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
условие
![$a^{n-1}\equiv 1\pmod n$ $a^{n-1}\equiv 1\pmod n$](https://dxdy-02.korotkov.co.uk/f/5/5/3/5533e0c3863926353c5fa46812f94e1e82.png)
необходимо, но не достаточно для того, чтобы
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
было простым. Т.е. если оно неверно, то
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
явно составное.
А если же
![$a^{n-1}\equiv 1\pmod n$ $a^{n-1}\equiv 1\pmod n$](https://dxdy-02.korotkov.co.uk/f/5/5/3/5533e0c3863926353c5fa46812f94e1e82.png)
верно, то это довольно информативно: представим
![$n-1=2^s q$ $n-1=2^s q$](https://dxdy-04.korotkov.co.uk/f/3/c/3/3c32b2f1253d42075ec7fc874a5c363a82.png)
, тогда, если
![$b=a^{\frac{n-1}{2^s}}\not\equiv 1\pmod p$ $b=a^{\frac{n-1}{2^s}}\not\equiv 1\pmod p$](https://dxdy-01.korotkov.co.uk/f/c/4/5/c4555a9f4bd817178d790afa0d19040682.png)
(что маловероятно), то мы будем вычислять
![$b^2,b^4,b^8,...,$ $b^2,b^4,b^8,...,$](https://dxdy-01.korotkov.co.uk/f/4/f/4/4f4f79fdff4a39121771f967777003de82.png)
, на каком то шаге по условию мы получим 1, значит на предыдущем шаге мы получим нетривиальный квадратный корень из 1 по модулю
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
.
Т.е. квадратные корни мы ищем не для всех
![$a$ $a$](https://dxdy-01.korotkov.co.uk/f/4/4/b/44bc9d542a92714cac84e01cbbb7fd6182.png)
, а только для таких, для которых
![$a^{n-1}\equiv 1\pmod n$ $a^{n-1}\equiv 1\pmod n$](https://dxdy-02.korotkov.co.uk/f/5/5/3/5533e0c3863926353c5fa46812f94e1e82.png)
. Таких
![$a$ $a$](https://dxdy-01.korotkov.co.uk/f/4/4/b/44bc9d542a92714cac84e01cbbb7fd6182.png)
грубо говоря мало. И вот только для таких
![$a$ $a$](https://dxdy-01.korotkov.co.uk/f/4/4/b/44bc9d542a92714cac84e01cbbb7fd6182.png)
(а не для всех) если мы будем искать квадратные корни из
![$1$ $1$](https://dxdy-01.korotkov.co.uk/f/0/3/4/034d0a6be0424bffe9a6e7ac9236c0f582.png)
, мы найдем нетривиальный квадратный корень более чем в половине случаев. Видимо именно это имеется ввиду в SICP 1.28, хотя условие написано немного неявно. И это даже очевидно, почему: степень группы делит
![$n-1$ $n-1$](https://dxdy-03.korotkov.co.uk/f/e/f/c/efcf8d472ecdd2ea56d727b5746100e382.png)
, значит
![$n-1=|\mathbb{Z}_n^{\times}|q=\varphi(n)q=2^swq$ $n-1=|\mathbb{Z}_n^{\times}|q=\varphi(n)q=2^swq$](https://dxdy-01.korotkov.co.uk/f/8/4/8/848d80d995ebaf25371b6e489578db2d82.png)
, число нетривиальных квадратных корней будет равно
![$2^s-2>2^{s-1}$ $2^s-2>2^{s-1}$](https://dxdy-03.korotkov.co.uk/f/2/2/2/222546b6b942c01b73a43ba9f01b17c482.png)
при
![$s>1$ $s>1$](https://dxdy-01.korotkov.co.uk/f/8/2/5/8251e9982416e71cbf3ad75247d79ec082.png)
, а частота нетривиальных квадратных корней будет
![$>\frac{2^{s-1}}{2^s}=\frac{1}{2}$ $>\frac{2^{s-1}}{2^s}=\frac{1}{2}$](https://dxdy-03.korotkov.co.uk/f/2/0/7/2070bbdfbdaf52d0d0703402b010e44d82.png)
.
В нашем примере
![$n=15$ $n=15$](https://dxdy-01.korotkov.co.uk/f/c/6/1/c61fa2e49de6f975646df75d1cb947cf82.png)
, таких
![$a$ $a$](https://dxdy-01.korotkov.co.uk/f/4/4/b/44bc9d542a92714cac84e01cbbb7fd6182.png)
всего 2:
![$\pm 4$ $\pm 4$](https://dxdy-03.korotkov.co.uk/f/2/5/c/25cfe28e7768fb30f094b4bda52db52a82.png)
. И они сразу являются нетривиальным квадратными корнями, т.е. частота
![$=\frac{2}{2}=1>\frac{1}{2}$ $=\frac{2}{2}=1>\frac{1}{2}$](https://dxdy-04.korotkov.co.uk/f/f/2/6/f26b85290de25d092cc16657a625c47082.png)
З.Ы. В Василенко описан алгоритм Миллера. Это - другой алгоритм. Алгоритм Миллера-Рабина в нем - это теорема 1.55.