from gmpy2 import (
    mpz,
    isqrt,
    mul,
    sub,
)

N = mpz(179769313486231590772930519078902473361797697894230657273430081157732675805505620686985379449212982959585501387537164015710139858647833778606925583497541085196591615128057575940752635007475935288710823649949940771895617054361149474865046711015101563940680527540071584560878577663743040086340742855278549092581)

A = isqrt(N) + 1

x = isqrt(mul(A, A) - N)

p, q = A - x, A + x

print((p, q))

assert mul(p, q) == N

241bef262cb65dcac467a5c651c6f554cfc1d382
<mask token>

<mask token>
print((p, q))
assert mul(p, q) == N

<mask token>
N = mpz(
    179769313486231590772930519078902473361797697894230657273430081157732675805505620686985379449212982959585501387537164015710139858647833778606925583497541085196591615128057575940752635007475935288710823649949940771895617054361149474865046711015101563940680527540071584560878577663743040086340742855278549092581
    )
A = isqrt(N) + 1
x = isqrt(mul(A, A) - N)
p, q = A - x, A + x
print((p, q))
assert mul(p, q) == N

from gmpy2 import mpz, isqrt, mul, sub
N = mpz(
    179769313486231590772930519078902473361797697894230657273430081157732675805505620686985379449212982959585501387537164015710139858647833778606925583497541085196591615128057575940752635007475935288710823649949940771895617054361149474865046711015101563940680527540071584560878577663743040086340742855278549092581
    )
A = isqrt(N) + 1
x = isqrt(mul(A, A) - N)
p, q = A - x, A + x
print((p, q))
assert mul(p, q) == N

from gmpy2 import (
    mpz,
    isqrt,
    mul,
    sub,
)

N = mpz(179769313486231590772930519078902473361797697894230657273430081157732675805505620686985379449212982959585501387537164015710139858647833778606925583497541085196591615128057575940752635007475935288710823649949940771895617054361149474865046711015101563940680527540071584560878577663743040086340742855278549092581)

A = isqrt(N) + 1

x = isqrt(mul(A, A) - N)

p, q = A - x, A + x

print((p, q))

assert mul(p, q) == N
