有效地找到完美的广场

时间:2012-02-02 15:22:41

标签: algorithm square-root

如何从函数中找到第一个完美的正方形: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次计算才能找到答案。

有更快的方法进行此计算吗?是否有一个简单的公式可以产生答案?

1 个答案:

答案 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 abc是已知整数,而您正在寻找满足的xy这个等式。一旦你认识到这一点,这个一般问题的解决方案就很丰富了。 Mathematica可以这样做(使用Reduce[eqn && Element[x|y, Integers], x, y]),你甚至可以找到一个包含here的实现source codemethod of solution的解释。

1 :您可能会将此识别为conic section。它是,人们已经studying them for thousands of years。因此,我们对它们的理解非常深刻,您的问题实际上非常有名。对它们的研究是immensely deep and still active area of mathematics