该算法取自 Alexander Shen 的伟大的“算法和编程:问题和解决方案”(即练习 1.1.28)。
以下是我的俄语翻译,如有错误或歧义请见谅。如果您有这种感觉,请纠正我。
算法应该做什么
用给定的自然n算法计算不等式的解数
x*x + y*y < n
在自然(非负)数中不使用实数操作
在帕斯卡
k := 0; s := 0;
{at this moment of execution
(s) = number of solutions of inequality with
x*x + y*y < n, x < k}
while k*k < n do begin
l := 0; t := 0;
while k*k + l*l < n do begin
l := l + 1;
t := t + 1;
end;
{at this line
(t) = number of solutions of k*k + y*y < n
for given (k) with y>=0}
k := k + 1;
s := s + t;
end;
{k*k >= n, so s = number of solutions of inequality}
在文中,Shen 还简要地说,该算法执行的操作数量“与n成正比,正如人们可以计算的那样”。所以我问你如何用严格的数学计算出来。