自然数的平方根

Square root of natural numbers?

本文关键字:平方根 自然数      更新时间:2023-10-16
example
root of 1 as 1*sqrt{1}
root of 2 as 1*sqrt{2}
root of 3 as 1*sqrt{3}
root of 9 as 3*sqrt{1}

我试图找到如下所示的算法:

for(i=sqrt(n);i>=1;i--)
if(n%(i*i)==0) {
    break;
}
cout<<i<<' '<<n/(i*i)<<endl;

但是当n是大数时就不好了

那么你能告诉我这个问题的算法吗?非常感谢!

你期望你的代码做什么?对于给定的n,您将找到平方除以n的最大数i。例如,如果n是素数(例如 n=5、17 等(,则只有在 i=1 的情况下才能满足此条件,因此您将在很多时候1得到结果。

这个问题没有解释完美/不完全正方形。由于平方根可以是浮点数/双精度数,因此迭代方法是查找根的更精确方法。

此链接可能会有所帮助: https://math.stackexchange.com/questions/296102/fastest-square-root-algorithm