1:题目:二分法求开方
给定一个整数,求其开方后的整数位
1)分析思路
1)x ^2 = n, 故采用二分法解决
2)如:n =7
0,1,2,3,4,5,6,7
(0+7)/2 = 3, 3^2 = 9 >7 (因此,开方后的值小于3,所以下次的搜索范围左调缩减到[0,2])
(0+2)/2 = 1,1^2 = 1<7 (因此开方后的的值大于1,所以下次的搜索范围右调缩减到[2,2])
因此,开方后的值为 2
3)x ^2 = n, 故 n 的开方为 x
切记:当不知道循环次数时,使用为了while循环
2)代码
import sys
n = int(input()) #一般采取动态输入
def fsear(n):
left = 0
right = n
while left <= right: #不知道循环次数就用while
mid = int((left + right)/2 )
if mid**2 < n and (mid+1)**2 > n:
return mid
elif mid**2 < n:
left = mid +1
elif mid**2 > n:
right = mid