如何从函数中找到第一个完美的正方形: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次计算才能找到答案。
有更快的方法进行此计算吗?是否有一个简单的公式可以产生答案?
答案 0 :(得分:10)
您正在寻找的是一般二次丢番图方程 1 的特殊情况的整数解
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的解释。
1 :您可能会将此识别为conic section。它是,人们已经studying them for thousands of years。因此,我们对它们的理解非常深刻,您的问题实际上非常有名。对它们的研究是immensely deep and still active area of mathematics。