22 lines
577 B
Text
22 lines
577 B
Text
function pell(n)
|
|
x = BigInt(floor(sqrt(n)))
|
|
y, z, r = x, BigInt(1), x << 1
|
|
e1, e2, f1, f2 = BigInt(1), BigInt(0), BigInt(0), BigInt(1)
|
|
while true
|
|
y = r * z - y
|
|
z = div(n - y * y, z)
|
|
r = div(x + y, z)
|
|
e1, e2 = e2, e2 * r + e1
|
|
f1, f2 = f2, f2 * r + f1
|
|
a, b = f2, e2
|
|
b, a = a, a * x + b
|
|
if a * a - n * b * b == 1
|
|
return a, b
|
|
end
|
|
end
|
|
end
|
|
|
|
for target in BigInt[61, 109, 181, 277]
|
|
x, y = pell(target)
|
|
println("x\u00b2 - $target", "y\u00b2 = 1 for x = $x and y = $y")
|
|
end
|