【问题标题】:Finding a Perfect Square efficiently有效地找到一个完美的正方形
【发布时间】:2012-02-02 15:22:40
【问题描述】:

如何从函数中找到第一个完美平方: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 并测试平方根是否为整数。

当 B 或 C 很大时,该算法非常慢,因为需要 n 次计算才能找到答案。

有没有更快的方法来做这个计算?有没有一个简单的公式可以得出答案?

【问题讨论】:

标签: algorithm square-root


【解决方案1】:

您正在寻找的是一般二次丢番图方程特例的整数解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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 2015-01-10
  • 2015-08-07
  • 1970-01-01
  • 2011-11-19
  • 2010-12-05
相关资源
最近更新 更多