17 lines
459 B
Text
17 lines
459 B
Text
var [const] BI=Import("zklBigNum"); // libGMP
|
|
|
|
fcn solve_pell(n){
|
|
x,y,z,r := BI(n).root(2), x.copy(), BI(1), x*2;
|
|
e1,e2, f1,f2 := BI(1), BI(0), BI(0), BI(1);
|
|
reg t; // a,b = c,d is a=c; b=d
|
|
do(30_000){ // throttle this in case of screw up
|
|
y,z,r = (r*z - y), (n - y*y)/z, (x + y)/z;
|
|
|
|
t,e2,e1 = e2, r*e2 + e1, t;
|
|
t,f2,f1 = f2, r*f2 + f1, t;
|
|
|
|
A,B := e2 + x*f2, f2;
|
|
|
|
if (A*A - B*B*n == 1) return(A,B);
|
|
}
|
|
}
|