Прошу помочь людей, имевших дело с этим методом. Сразу оговорюсь, что он у меня работает, числа раскладывает, но я не понимаю, адекватно ли происходящее в процессе.
В алгоритме Бриллхарта-Моррисона получение пар A, Q для которых выполняется 

 происходит через разложение в цепную дробь числа 

. Мало знакомый с цепными дробями, я долго искал подробный алгоритм генерации. В результате наткнулся на оригинальную работу Померанса - 
Implementation of the continued fraction integer factoring algorithm, где на 4ой странице есть подробное описание следующего вида:


![$q_n = [G_n/Q_n]$ $q_n = [G_n/Q_n]$](https://dxdy-03.korotkov.co.uk/f/6/3/1/631fd6f82c4991bbb91559bce77c6bf782.png)









	В общем я реализовал эту последовательность, но почему-то пары генерируются через шаг.
Тоесть не для каждого шага получается пара, а для каждых двух соседних шагов.
Чтобы объяснить понятнее, даю отрывок из файла с парами:
N = 3217104339627144632956527751747 (102 bits)
An^2 mod N = 
1522905984030422 # Qn =  2064351653568051
An^2 mod N = 3217104339627143550065188676488 # Qn =  
1522905984030422An^2 mod N = 
2200073224775814 # Qn =  1082891339075259
An^2 mod N = 3217104339627143922939355674480 # Qn =  
2200073224775814An^2 mod N = 
1131588038634766 # Qn =  710017172077267
An^2 mod N = 3217104339627142234911540524884 # Qn =  
1131588038634766В результате я, конечно, просто отбираю пары по диагонали и всё работает. Но я не могу понять: 
так должно быть или я накосячил в реализации последовательности? Если второе, то после исправления количество шагов станет вдвое меньше.