如何快速求一个整数的平方根?有这样的同事,也是福气!(服气)
合集 · 英雄哥的算法题集 (10)
Description
给大家总结了一下BGM,其实学习算法最重要的是兴趣,好的BGM可以把兴趣点燃,所以BGM才是最重要的。这个视频的BGM按顺序如下为: 1、魂斗罗BGM 2、万万没想到BGM 3、偷功 4、少林足球BGM 5、悬疑场景下用的BGM(00:40 秒左右的那个,我也不知道是叫啥) 6、六脉神剑BGM 7、柯南BGM 8、阿朱之死BGM 9、迪迦奥特曼BGM 10、TVB经典BGM(好多TVB剧里都有,比如《金装四大才子》)
Comments
【chatGPT】计算一个整数的平方根最快的方法之一是使用牛顿迭代法。牛顿迭代法是一种数学方法,它通过不断迭代来逼近目标值。这意味着,您需要给出一个初始值,然后不断地重复使用一个公式来更新该值,直到它接近目标值为止。 例如,假设您要计算整数 x 的平方根。首先,您需要给出一个初始值 y0,作为迭代的起点。然后,您可以使用以下公式来计算下一个迭代值 y1: y1 = (y0 + x/y0) / 2 您可以不断地重复使用这个公式来计算下一个迭代值,直到 yk 接近目标值为止。 在这种情况下,您可以计算 x 的平方根,直到 yk 接近 x 的平方根为止。例如,如果 x 的平方根约为 2.5,那么 yk 的值应该接近 2.5,且它与 2.5 的差值应该很小。 要实现这种方法,您需要编写一个函数,该函数接收两个参数:一个整数 x 和一个初始值 y0。然后,该函数应该不断地重复计算下一个迭代值,直到 yk 接近目标值为止。例如,您可以使用以下 Python 代码
♥ 1163 ↩ 66
有没有那种压根看不懂,但是看完的人。
♥ 1126 ↩ 44
先建立一个库,把一千亿以下的整数平方根答案存进去,然后用查数据库的方式找出答案,我觉得这个方法最快,不服来辩。
♥ 1054 ↩ 65
您说的对,牛顿莱布尼茨迭代法也是一种求解平方根的方法。牛顿莱布尼茨迭代法是一种逐次逼近的方法,它通过不断迭代来逼近目标值。 与二分法相比,牛顿莱布尼茨迭代法的优点是它更快速,能够更快地求解平方根。但是,二分法更容易理解和实现,在某些情况下也可以提供较高的精度。所以,哪种方法更适合使用,要取决于具体情况。
♥ 313 ↩ 9
还没看,盲猜0x5f375a86[doge](这串数字烂熟于心了)
♥ 306 ↩ 36
摆烂的小白:如果说会出现错误进位产生的问题,那我直接拿x²与n进行一次对比做一个修正验算不就行了吗,反正能跑就行
♥ 228 ↩ 12
正好我之前想过这个问题,粗略地说说我的想法: 定义y=x^n,已知y,求x。(以下都为二进制)以n=2为例: 首先根据y的位数确定x的位数,x的位数+1=(y的位数-1)/2(向下取整),x最高位置1,其余位为0。 然后二分法迭代,不过不用乘法。只看最高两位,10×10可以通过移位得到,11×11=10×10+10+11,之后的计算也像这样,用两次加法代替乘法。 我也没系统的学过,只是兴趣,如有错误欢迎指正。
♥ 206 ↩ 10
之前在工地,一个快退休的老师傅给我表演了一波徒手开根。我都惊呆了
♥ 132 ↩ 8
自己临时写的c++代码,理论上是logn。并且没有*的运算。 int mySqrt(int n, int& rest) { if (n == 0) { rest = 0; return 0; } int ret = mySqrt(n >> 2, rest); rest = (rest << 2) + (n & 3); if (rest >= (ret << 2) + 1) { rest -= (ret << 2) + 1; return (ret << 1) + 1; } else { return (ret << 1); } }
♥ 104 ↩ 9
给大家总结了一下BGM,其实学习算法最重要的是兴趣,好的BGM可以把兴趣点燃,所以BGM才是最重要的。这个视频的BGM按顺序如下为: 1、魂斗罗BGM 2、万万没想到BGM 3、偷功 4、少林足球BGM 5、悬疑场景下用的BGM(00:40 秒左右的那个,我也不知道是叫啥) 6、六脉神剑BGM 7、柯南BGM 8、阿朱之死BGM 9、迪迦奥特曼BGM 10、TVB经典BGM(好多TVB剧里都有,比如《金装四大才子》)
♥ 98 ↩ 4
你的放弃可以成就更多的人=只要你不卷,别人就多一份成功的希望。
♥ 95 ↩ 5
第一步,分析该业务需要结果的最大精度 第二步,创建一个函数,入参是一个整数,返回值是一个浮点数。同时做精度处理 第三步,提交。 第四步,这个代码不是我写的。
♥ 77 ↩ 4
二分逼近,泰勒展开,WTF,[脱单doge]
♥ 48 ↩ 3
之前学计算机原理的时候还接触到一个减奇数法开平方 因为n^2=1+3+…+(2n-1) 所以只要不断减递增的奇数直到结果小于等于0 就可以得到开平方数的整数部分了 感觉比较好的点是不涉及浮点数运算
♥ 44 ↩ 5
这个我会: // What The Fuck
♥ 43 ↩ 3
有一种眼前的知识逐渐超出自己认知范围的美[脱单doge][喜欢]
♥ 28 ↩ 1
如果是根据平台优化的话,Intel手册上详细说明了要什么精度怎么算最优,double从53bits,52bits,26bits和14bits的精度都给出最优的内嵌汇编了。有AVX512F指令集的话,最高精度可以直接用VSQRTPD向量化,一次算八个double。虽然throughput是24个周期,但还是要比软件方法快[滑稽]
♥ 28
你这骗的,我不得不投,气死我了
♥ 21 ↩ 1
主题逐渐远离做游戏[doge]
♥ 20 ↩ 3