Generowanie ułamków ciągłych dla pierwiastków kwadratowych

Napisałem ten kod do generowania ciągłej części pierwiastka kwadratowego N.
Ale zawodzi, gdy N = 139.
Wyjście powinno być{11,1,3,1,3,7,1,1,2,11,2,1,1,7,3,1,3,1,22}
Podczas gdy mój kod daje mi ciąg 394 terminów ... z których kilka pierwszych jest poprawnych, ale gdy osiągnie 22, daje 12!

Czy ktoś może mi z tym pomóc?

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

questionAnswers(5)

yourAnswerToTheQuestion