高效找到完美广场
如何从功能中找到第一个完美广场:f(n)=An²+Bn+C
? B和C给出。 A,B,C和n总是整数,A总是1.问题是找到n。高效找到完美广场
Example: A=1, B=2182, C=3248
第一个完全平方答案为n = 16,因为sqrt(f(16))=196
。
我的算法递增n并测试平方根是否是整数nunber。
当B或C很大时,该算法非常慢,因为需要n次计算才能找到答案。
有没有更快的方法来做这个计算?有一个简单的公式可以产生答案吗?
你在找什么是整数解的一般二次丢番图方程
Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0
,你有一个特殊的情况下
ax^2 + bx + c = y^2
使A = a, B = 0, C = -1, D = b, E = 0, F = c
其中a
,b
, c
是已知的整数,您正在寻找满足此方程的未知x
和y
。一旦你意识到这一点,这个普遍问题的解决方案是丰富的。 Mathematica可以做到这一点(使用Reduce[eqn && Element[x|y, Integers], x, y]
),你甚至可以找到一个实现here,包括source code和method of solution的解释。
:您可能会将其识别为conic section。它是,并且人们已经studying them for thousands of years。因此,我们对它们的理解非常深刻,您的问题其实非常有名。他们的研究是immensely deep and still active area of mathematics。
您可能还想在[解决广义Pell方程](http://www.jpr2718.org/pell.pdf) – 2012-02-02 16:08:47
上添加pdf链接吉姆和杰森,非常感谢你的帮助,你的回答非常有帮助 – user1185049 2012-02-03 13:10:07
如果我是你,我会问在数学stackexchange。 – 2012-02-02 15:27:12
也许一个用于http://math.stackexchange.com/ – weston 2012-02-02 15:27:42