【发布时间】:2020-12-14 05:58:23
【问题描述】:
我的问题如下:
给定一个自然数 n,我想找到所有自然数 x 和 y,这样
n = x² + y²
由于这是加法顺序无关紧要,因此我将 (x,y) 和 (y,x) 视为一种解决方案。
我的初始算法是假设 y>x,对于所有 x 计算 y²=n-x² 并使用对 y² 的二进制搜索来检查 y 是否为自然数。
for(x=1;2*x*x<n;x++)
{
y_squared=n-x*x;
if(isSquare(y_squared)==false)
continue;
//rest of the code
}
我的算法有什么改进吗?我已经检查了 n 是否可以使用两个平方定理得到解决方案,但我想知道有多少。
我的算法是 O(sqrt(n) * log(n) )
提前致谢。
【问题讨论】:
标签: algorithm optimization mathematical-optimization