PellsEquation.jl

A solver for Pell's Equation written in Julia
Author byhill
Popularity
2 Stars
Updated Last
3 Months Ago
Started In
January 2023

PellsEquation

Build Status

Overview

This package gives provides support for finding solutions to the generalized Pell's equation. More specifically, give an integer $N$ and an integer $D \geq 0$, this package will find all nonnegative integer solutions $(x, y)$ to the diophantine equation $x^2 - Dy^2 = N$.

To do this, you can call pellseqn(D, N=1). This will return a (possibly infinite) iterator whose eltype is Tuple{BigInt,BigInt}.

Examples

julia> Pkg.add("PellsEquation")

julia> using PellsEquation, .Iterators

julia> collect(take(pellseqn(2), 5))
5-element Vector{Tuple{BigInt, BigInt}}:
 (1, 0)
 (3, 2)
 (17, 12)
 (99, 70)
 (577, 408)

julia> collect(take(pellseqn(2, 1), 5))
5-element Vector{Tuple{BigInt, BigInt}}:
 (1, 0)
 (3, 2)
 (17, 12)
 (99, 70)
 (577, 408)

julia> collect(take(pellseqn(5, -1), 5))
5-element Vector{Tuple{BigInt, BigInt}}:
 (2, 1)
 (38, 17)
 (682, 305)
 (12238, 5473)
 (219602, 98209)

julia> collect(take(pellseqn(4, 25), 5))
2-element Vector{Tuple{BigInt, BigInt}}:
 (5, 0)
 (13, 6)

julia> collect(take(pellseqn(4, 10), 5))
Tuple{BigInt, BigInt}[]

julia> collect(take(pellseqn(921, -12), 5))
5-element Vector{Tuple{BigInt, BigInt}}:
 (123013602, 4053436)
 (620494807415610916348542, 20445999054572056617484)
 (3129847429634131057287425640460782483138, 103131979224431202543397867947637928044)
 (15787311699815721226111492312624904230758974206686324318, 520209607285982995690281237198588485553526346187087196)
 (79633022474924155281204153475574155565247711565894067613899610557324322, 2623997304693724359853375113257533978570443685138259398969894101570076)

Used By Packages

No packages found.