algorithm - 双正方形 : counting numbers which are sums of two perfect squares

标签 algorithm math

来源:Facebook Hacker Cup Qualification Round 2011

双平方数是一个整数 X,可以表示为两个完全平方数的和。例如,10 是双正方形,因为 10 = 32 + 12。给定 X,我们如何确定它可以写成两个平方和的方式的数量?比如10只能写成32 + 12(我们不算12 + 32 因为不同)。另一方面,25 可以写成 52 + 02 或 42 + 32 .

你需要解决 0 ≤ X ≤ 2,147,483,647 的问题。

例子:

  • 10 => 1
  • 25 => 2
  • 3 => 0
  • 0 => 1
  • 1 => 1

最佳答案

对数字 n 进行因式分解,并检查它是否具有奇数估值的质因数 p,使得 p = 3 (mod 4)。当且仅当 n 不是两个平方的和时才会发生。

解决方案的数量有一个封闭形式的表达式,涉及 n 的约数。参见 this, Theorem 3以获得准确的陈述。

关于algorithm - 双正方形 : counting numbers which are sums of two perfect squares,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656944/

相关文章:

algorithm - 在编程术语中,什么是回溯解决方案?

c++ - 修改广度优先搜索算法以记住矩阵中的最短路线

database - 提高字符串匹配的性能

具有多种操作的Java计算器

.net - .net 框架是否具有将度数转换为弧度的内置方法?

ios - 如何在标签中输出正确的数字?

php - 全文搜索,没有结果?

algorithm - 图像转换算法

math - 我应该如何开始学习人工智能所需的数学

javascript - 简单 JavaScript 游戏的陡坡体积算法