问题描述:
实现int(sqrt(int x))函数,计算返回x的平方根。
例如
sqrt(3) = 1
sqrt(4) = 2
sqrt(5) = 2
sqrt(10)=3
程序分析:
可以采用夹逼原理,有点二分查找的意思,对半分,查看是否在范围内,知道缩小到你想要得数为止。
from math import sqrt
class Soultions:
def my_sqrt(self,num):
l = 0
r = num
while l + 1 < r:
mid = (r + l) // 2
if mid * mid == num:
return mid
elif mid * mid < num:
l = mid
else:
r = mid
if r * r == num:
return r
else:
return l
if __name__ == "__main__":
num = int(input('请输入数字:'))
soultion = Soultions()
print('正确的结果是:',int(sqrt(num)))
print('测试的结果是:',soultion.my_sqrt(num))
`实现函数pow(x,n),计算返回x的n次幂。``
class Soultion:
def myPower(self,x,n):
if n < 0:
x = 1 / x
n = -n
ans = 1
tmp = x
while n != 0 :
if n % 2 ==1:
ans *= tmp
tmp *= tmp
n //= 2
return ans
if __name__ == '__main__':
temp = Soultion()
num1 = int(input('请输入数字x:'))
num2 = int(input('请输入数字n:'))
print('正确的结果是:',num1**num2)
print('得到的结果是:',temp.myPower(num1,num2))