我似乎无法找到任何答案,但是如果我有一个像(X^2-4n)
的平方根这样的方程式,其中4n是常数,我怎么能设置x
所以等式给出整数。
我知道将x设置为n + 1有效,但我正在寻找能够生成所有解决方案的算法。
答案 0 :(得分:3)
所以,问题是找到所有整数对(x, m)
,以便:
sqrt(x^2 - 4n) = m
我们有:
x^2 - 4n = m^2
或
x^2 - mˆ2 = 4n
所以
(x + m)(x - m) = 4n
现在,2
除以4n
,因此必须划分(x+m)
或(x-m)
。但是,如果将它们中的任何一个分开,它也会分裂另一个。因此a := (x+m)/2
和b := (x-m)/2
都是整数。因此
a*b = n
因此,只需将n
分解为a*b
以及所有可能的方式,并从上面的等式中恢复x
和m
:
x = a + b.
m = a - b.
您的解决方案x = n+1
对应于n = n*1
和a=n
所需的微不足因素化b=1
。
<强>更新强>
这是一个打印所有对(x, m)
n % a = 0
那么
b := n / a
。print(a + b), print(a - b)
a * a > n
转到第2步。