# Given an integer #n# is there an efficient way to find integers #p, q# such that #abs(p^2-n q^2) <= 1# ?

##### 1 Answer

Assuming

Find the simple continued fraction expansion of

#### Explanation:

To find the simple continued fraction expansion of

#m_0 = 0#

#d_0 = 1#

#a_0 = floor(sqrt(n))#

#m_(i+1) = d_i a_i - m_i#

#d_(i+1) = (n - m_(i+1)^2)/d_i#

#a_(i+1) = floor((a_0 + m_(i+1)) / d_(i+1))#

The continued fraction expansion is then

#sqrt(n) = a_0 + 1/(a_1 + 1/(a_2 + 1/(a_3 + 1/...)))#

This will repeat immediately after the first term satisfying

Stop just before the

For example, consider

#m_0 = 0# ,#d_0 = 1# ,#a_0 = floor(sqrt(6798)) = 82#

Then:

#m_1 = d_0 a_0 - m_0 = 1*82 - 0 = 82#

#d_1 = (n - m_1^2) / d_0 = (6798 - 82^2) / 1 = 74#

#a_1 = floor((a_0 + m_1) / d_1) = floor((82 + 82) / 74) = 2#

#m_2 = d_1 a_1 - m_1 = 74 * 2 - 82 = 66#

#d_2 = (n - m_2^2) / d_1 = (6798 - 66^2) / 74 = 33#

#a_2 = floor((a_0 + m_2)/d_2) = floor((82 + 66) / 33) = 4#

#m_3 = d_2 a_2 - m_2 = 33 * 4 - 66 = 66#

#d_3 = (n - m_3^2) / d_2 = (6798 - 66^2) / 33 = 74#

#a_3 = floor((a_0 + m_3) / d_3) = floor((82 + 66) / 74) = 2#

#m_4 = d_3 * a_3 - m_3 = 74 * 2 - 66 = 82#

#d_4 = (n - m_4^2) / d_3 = (6798 - 6724) / 74 = 1#

#a_4 = floor((a_0 + m_4) / d_4) = floor((82+82)/1) = 164 = 2 * a_0#

So

#[82;2,4,2] = 82+1/(2+1/(4+1/2))#

#=82+1/(2+1/(9/2))#

#=82+1/(2+2/9)#

#=82+1/(20/9)#

#=82+9/20#

#=1649/20#

So

#p^2 = 2719201#

#n q^2 = 6798 * 400 = 2719200#

So