Generando fracciones continuas para raíces cuadradas.

Escribí este código para generar la fracción continua de una raíz cuadrada N.
Pero falla cuando N = 139.
La salida debe ser{11,1,3,1,3,7,1,1,2,11,2,1,1,7,3,1,3,1,22}
Mientras que mi código me da una secuencia de 394 términos ... de los cuales los primeros términos son correctos, pero cuando llega a 22 da 12!

puede alguien ayudarme con esto?

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);

Respuestas a la pregunta(5)

Su respuesta a la pregunta