将整数表示为四个平方的总和

时间:2011-09-26 04:27:33

标签: algorithm number-theory

给定正整数m,找到abcd四个整数a^2 + b^2 + c^2 + d^2 = m O(m^2 log m) }}。可以使用额外的空间。

我可以想到O(m^3)解决方案,但我对O(m^2 logm)解决方案感到困惑。

2 个答案:

答案 0 :(得分:0)

第一次提示:

将平方元素从1到m ^ 2排序的复杂性是什么

第二个提示:

看看这篇文章寻求帮助:

Break time, find any triple which matches pythagoras equation in O(n^2)

第三个提示:

如果您需要更多帮助:(来自之前帖子的yi_H回复):

  

我猜O(n ^ 2 log n)将对数字进行排序,取任何两个   对(O(n ^ 2))并查看c ^ 2的数量中是否有c   = a ^ 2 + b ^ 2。您可以使用二进制搜索来查找c,即   为O(log(N))。

     

作者:yi_H

现在比较n和sqrt(m)

希望你能找到解决方案。

答案 1 :(得分:0)

拉格朗日有一个经典定理,即每个自然数都是四个方格的总和。

关于这个主题的Wikipedia页面提到有一个随机算法用于计算在O(\ lg ^ 2 m)时间内运行的表示(上面的所有建议都是m中的多项式,即它们是问题实例大小的指数(因为数字m可以用\ lg m位编码)。

顺便说一句,拉格朗日定理证明了整数的加法和时间的不可判定性(因为自然界是不可判定的,并且可以根据定理用加号和次数定义整数)。