python求平方根的三种方法

本文介绍了Python中计算平方根的三种方法:0.5次方运算、指数与对数结合以及二分查找法。其中,二分查找法虽然内存消耗较小,但可能涉及误差判断;而牛顿迭代法在精度和效率上表现更优,但实现相对复杂。对于面试而言,理解并掌握这些方法对于优化代码性能至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python求平方根的三种方法

题干描述

没啥好说的qwq,求根号下x,并舍弃小数部分,只保留整数

题目解答

方法一:不多bb,直接0.5次方(这应该是最没有营养的解法,面试官估计不会买账23333)

x = int(input())
res = int(x **0.5)
print(res)

该方法内存消耗是最大的

方法二:同样是直接算,这里使用指对数袖珍计算器,由于
在这里插入图片描述
所以引入math模块

import math
x = int(input())
if x == 0:
    res = 0
else:
    res = int(math.exp(0.5*math.log(x)))
    if (res + 1)**2 <= x :
        res = res + 1
print(res)
 

这里有个坑人的地方,就是因为计算机无法精确储存指对运算得出的浮点数值,所以有可能在返回整数的时候造成误差,所以要判断加一后是否满足题设条件

该方法执行用时是最小的

方法三:二分法,大概是最经典的方法

x = int(input())
low, high, ans = 0, x, -1
while low <= high:
    mid = (low + high) // 2
    if mid * mid <= x:
        ans = mid
        low = mid + 1
    else:
        high = mid - 1
print(ans)

二分法有多种写法,但这个应该是最简单的,不会出现死循环

方法三:牛顿迭代法
这里直接开传送门了,不是我懒,是别人写的太好了…
二分查找 + 牛顿法(Python 代码、Java 代码).

x = int(input())
if x == 0:
    res = 0
else :
	C,x0 = float(x),float(x)
	while True:
		xi = 0.5 * (x0 + C / x0)
		if abs(x0 - xi) < 1e-7:
			break
		x0 = xi
	res = int(x0)
print(res)
	

该方法内存消耗是最小的

题目源自leetcode69.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值