仅使用加法和减法查找自然数的平方根的公式

时间:2018-04-07 22:59:44

标签: math square-root

如何仅使用加法和减法来找出自然数的平方根?
谢谢。
[我查看了互联网,但我没有找到与此问题相关的任何内容。] 解释我的问题:我想创建一个c函数,它只接收一个自然数并返回它的平方根。
您可以说使用" sqrt"函数,但我只是想创建一个利用加法和减法运算符来创建平方根 你不必编写程序,只需编写公式即可。感谢。

更新:这个问题并不是专门针对数学而是编码。(我标记了#34; c"因为它有一些链接,但这个问题与编码无关。)

2 个答案:

答案 0 :(得分:2)

n 2 相当于 n 第一个奇数的总和。

您可以迭代n(因此只将下一个奇数加到先前计算的总和上),直到该平方等于或超过您的数字。

k = 0
sum = 0
while sum < target:
    k += 1
    sum += 2k-1
if sum > target:
    the target doesn't have integer root
else:
    k is the square root

答案 1 :(得分:0)

我们可以使用(n+1)² = n² + 2n + 1

这一事实
def sqrt(n):
    k = 0
    s = 0
    while s <= n:
        s = s+k+k+1
        k = k+1
    return k-1

print (sqrt(0))     # 0^2
print (sqrt(1))     # 1^2
print (sqrt(2))     # (1.4142135623730951...)^2
print (sqrt(144))   # 12^2
print (sqrt(169))   # 13^2
print (sqrt(196))   # 14^2
print (sqrt(255))   # 15^2
print (sqrt(1000))  # (31.622776601683793...)^2
print (sqrt(2000))  # (44.721359549995796...)^2

<强> UPD
对不起,我以为你在问代码:)