Генерация непрерывных дробей для квадратных корней

Я написал этот код для генерации продолжения дроби квадратного корня N.
Но он терпит неудачу, когда N = 139.
Выход должен быть{11,1,3,1,3,7,1,1,2,11,2,1,1,7,3,1,3,1,22}
Хотя мой код дает мне последовательность из 394 терминов ... из которых первые несколько терминов верны, но когда он достигает 22, он дает 12!

Может ли кто-нибудь помочь мне с этим?

vector <int> f;
int B;double A;
A = sqrt(N*1.0);
B = floor(A);
f.push_back(B);                 
while (B != 2 * f[0])) {
    A = 1.0 / (A - B);
    B =floor(A);                            
    f.push_back(B);     
}
f.push_back(B);

Ответы на вопрос(5)

Ваш ответ на вопрос