Входные данные: a — целое число, b — натуральное, нечётное, больше единицы.
Выходные данные:
— символ Якоби
1
(проверка взаимной простоты). Если НОД (
a,
b)≠1, выход из алгоритма с ответом 0. 2
(инициализация). r:=1 3
(переход к положительным числам). Если
a<0 то
a:=-a Если
b mod 4 = 3 то
r:=-r Конец если 4
(избавление от чётности). t:=0 Цикл ПОКА
a – чётное
t:=t+1 a:=a/2 Конец цикла Если
t – нечётное, то Если
b mod 8 = 3 или 5, то
r:=-
r. Конец если 5
(квадратичный закон взаимности). Если
a mod 4 =
b mod 4 = 3, то
r:=-
r. c:=a; a:=b mod c; b:=c. 6
(выход из алгоритма?). Если
a ≠0, то идти на шаг 4, иначе выйти из алгоритма с ответом r.
Комментарии к алгоритму.
В алгоритме везде берётся наименьший положительный вычет (то есть остаток от деления).
На четвёртом шаге используется мультипликативность символа Якоби, а затем вычисляется символ Якоби
. Чтобы избежать лишнего возведения в степень, проверяется только остаток от деления b на 8.
На пятом шаге тоже вместо возведения в степень используется проверка остатков от деления.
Сложность алгоритма равна
битовых операций.