编写函数,求一个整数的平方根。
时间: 2024-05-08 12:20:49 浏览: 13
你可以使用牛顿迭代法来求一个整数的平方根,具体实现如下:
```python
def sqrt(x):
"""
求一个整数的平方根
"""
if x < 0:
raise ValueError("x不能为负数")
if x == 0:
return 0
# 初始值取x,可以加快收敛
cur = x
while True:
pre = cur
cur = (cur + x / cur) / 2
if abs(cur - pre) < 1e-6:
return int(cur)
```
这里的 `1e-6` 表示误差的阈值,当两次迭代的结果之间的差值小于这个阈值时,就认为已经达到了精度要求。
相关问题
编写函数,求一个整数的平方根。
可以使用二分法或牛顿迭代法来求一个整数的平方根。
以下是使用二分法实现的 Python 函数:
```python
def sqrt(x):
if x < 0:
return None
if x == 0:
return 0
left, right = 1, x
while left <= right:
mid = (left + right) // 2
if mid * mid == x:
return mid
elif mid * mid < x:
left = mid + 1
else:
right = mid - 1
return right
```
以下是使用牛顿迭代法实现的 Python 函数:
```python
def sqrt(x):
if x < 0:
return None
if x == 0:
return 0
last, res = 0.0, 1.0
while last != res:
last = res
res = (res + x / res) / 2
return int(res)
```
这两个函数都可以求出一个整数的平方根,可以根据具体情况选择使用哪个函数。
用c语言编写一个函数,求一个整数的平方根
以下是使用牛顿迭代法实现求解整数的平方根的C语言函数:
```c
#include <stdio.h>
float sqrt(int n) {
float x = n;
float y = 1;
float e = 0.000001; // 精度
while (x - y > e) {
x = (x + y) / 2;
y = n / x;
}
return x;
}
int main() {
int n;
printf("请输入一个整数:");
scanf("%d", &n);
printf("%d 的平方根为 %f\n", n, sqrt(n));
return 0;
}
```
在函数中,我们将整数转换为浮点数,并用x初始化。然后,我们使用牛顿迭代法来逼近平方根,直到x和y之间的差小于给定的精度。最后,我们返回x的值作为结果。