iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现求平方根的方法
  • 574
分享到

C++实现求平方根的方法

2023-06-20 16:06:35 574人浏览 泡泡鱼
摘要

这篇文章主要介绍“c++实现求平方根的方法”,在日常操作中,相信很多人在C++实现求平方根的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++实现求平方根的方法”的疑惑有所帮助!接下来,请跟着小编一起来

这篇文章主要介绍“c++实现求平方根的方法”,在日常操作中,相信很多人在C++实现求平方根的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++实现求平方根的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Sqrt(x) 求平方根

Implement int sqrt(int x).

Compute and return the square root of x, where x is guaranteed to be a non-negative integer.

Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.

Example 1:

Input: 4
Output: 2

Example 2:

Input: 8
Output: 2
Explanation: The square root of 8 is 2.82842..., and since
the decimal part is truncated, 2 is returned.

这道题要求我们求平方根,我们能想到的方法就是算一个候选值的平方,然后和x比较大小,为了缩短查找时间,我们采用二分搜索法来找平方根,找最后一个不大于目标值的数,这里细心的童鞋可能会有疑问,在总结贴中第三类博主的 right 用的是开区间,那么这里为啥 right 初始化为x,而不是 x+1 呢?因为总结帖里的 left 和 right 都是数组下标,这里的 left 和 right 直接就是数字本身了,一个数字的平方根是不可能比起本身还大的,所以不用加1,还有就是这里若x是整型最大值,再加1就会溢出。最后就是返回值是 right-1,因为题目中说了要把小数部分减去,只有减1才能得到正确的值,代码如下:

解法一:

class Solution {public:    int mySqrt(int x) {        if (x <= 1) return x;        int left = 0, right = x;        while (left < right) {            int mid = left + (right - left) / 2;            if (x / mid >= mid) left = mid + 1;            else right = mid;        }        return right - 1;    }};

这道题还有另一种解法,是利用牛顿迭代法,记得高数中好像讲到过这个方法,是用逼近法求方程根的神器,在这里也可以借用一下,因为要求 x2 = n 的解,令 f(x)=x2-n,相当于求解 f(x)=0 的解,可以求出递推式如下:

xi+1=xi - (xi- n) / (2xi) = xi - xi / 2 + n / (2xi) = xi / 2 + n / 2xi = (xi + n/xi) / 2

解法二:

class Solution {public:    int mySqrt(int x) {        if (x == 0) return 0;        double res = 1, pre = 0;        while (abs(res - pre) > 1e-6) {            pre = res;            res = (res + x / res) / 2;        }        return int(res);    }};

也是牛顿迭代法,写法更加简洁一些,注意为了防止越界,声明为长整型,参见代码如下:

解法三:

class Solution {public:    int mySqrt(int x) {        long res = x;        while (res * res > x) {            res = (res + x / res) / 2;        }        return res;    }};

到此,关于“C++实现求平方根的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: C++实现求平方根的方法

本文链接: https://www.lsjlt.com/news/298282.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++实现求平方根的方法
    这篇文章主要介绍“C++实现求平方根的方法”,在日常操作中,相信很多人在C++实现求平方根的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++实现求平方根的方法”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-20
  • C++实现LeetCode( 69.求平方根)
    [LeetCode] 69. Sqrt(x) 求平方根 Implement int sqrt(int x). Compute and return the square r...
    99+
    2024-04-02
  • PHP求平方根
    ...
    99+
    2024-04-02
  • c语言求平方根函数怎么写
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • Python用二分法求平方根的案例
    我就废话不多说了,大家还是直接看代码吧~ def sq2(x,e): e = e #误差范围 low= 0 high = max(x,1.0) #处理大于0小于...
    99+
    2024-04-02
  • Python中求数字的平方根和平方的几种
    方法一: 使用内置模块 >>> import math >>> math.pow(12, 2) # 求平方 144.0 >>> math.sqrt(144) #...
    99+
    2023-01-31
    平方根 几种 中求
  • javascript基于牛顿迭代法怎么实现求浮点数的平方根
    这篇文章主要介绍javascript基于牛顿迭代法怎么实现求浮点数的平方根,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先是牛顿迭代法原理:比如我们要求a的平方根,首先随便猜一个近...
    99+
    2024-04-02
  • JavaScript如何实现求开平方
    今天小编给大家分享一下JavaScript如何实现求开平方的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2024-04-02
  • python求平均数的方法
    这篇文章将为大家详细讲解有关python求平均数的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python求平均数的方法:首先新建python文件,并输入要计算的平均数;然后初始化sum总和的值;最...
    99+
    2023-06-08
  • java中怎么求一个正整数的平方根
    这篇文章给大家介绍java中怎么求一个正整数的平方根,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、二分法二分法的思想很简单,就是从0到N不断的去缩小范围来找一个一个满足精度的最佳值。我们举一个函数的例子:这就是二分...
    99+
    2023-06-19
  • Java习题之实现平方根(sqrt)函数
    目录 前言 二分查找 牛顿迭代法 总结 🎁博主介绍:博客名为tq02,已学C语言、JavaSE,目前学了MySQL和JavaWeb 🎥学习专栏:  C语言        JavaSE      M...
    99+
    2023-08-31
    java 开发语言 笔记
  • 使用PyTorch求平方根报错如何解决
    使用PyTorch求平方根报错如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。问题描述初步使用PyTorch进行平方根计算,通过range()创建一个张量,然后对其求...
    99+
    2023-06-15
  • C++如何实现二分法求方程
    这篇文章将为大家详细讲解有关C++如何实现二分法求方程,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。二分法是一种求解方程近似根的方法。对于一个函数 f(x)f(x),使用二分法求 f(...
    99+
    2023-06-15
  • C语言之如何求三次方根
    目录C语言求三次方根前话错误示范正确的打开方式延伸C语言中,开3次方用什么?C语言求三次方根 前话 说到C语言求根,我们一般会想到用sqrt(x)函数,它的输入值和返回值都是doub...
    99+
    2022-12-08
    C语言三次方根 求三次方根 C语言求三次方根
  • PyTorch平方根报错的处理方案
    问题描述 初步使用PyTorch进行平方根计算,通过range()创建一个张量,然后对其求平方根。 a = torch.tensor(list(range(9))) b = to...
    99+
    2024-04-02
  • C++实现二分法求方程近似解
    二分法是一种求解方程近似根的方法。对于一个函数 f(x)f(x),使用二分法求 f(x)f(x) 近似解的时候,我们先设定一个迭代区间(在这个题目上,我...
    99+
    2024-04-02
  • 怎么用python二分法求方程的根
    要使用二分法求解方程的根,可以按照以下步骤进行: 定义一个函数,用于计算方程的值。假设我们要求解的方程是f(x)=0,那么这个函...
    99+
    2024-02-29
    python
  • c语言实现1~n累加求和的方法
    这篇文章给大家分享的是有关c语言实现1~n累加求和的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。for循环,语法“for(i=1;i<=n;i++){s=s+i;}”;2、while循环,语法“whi...
    99+
    2023-06-14
  • pandas求平均数和中位数的方法实例
    目录准备1.求平均数1.1对全表进行操作1.1.2 求取每行的平均数1.2 对单独的一行或者一列进行操作1.2.1 求取单独某一列的平均数1.3 对多行或者多列进行操作1.3.1 求...
    99+
    2024-04-02
  • css实现水平居中的方法
    这篇文章主要介绍了css实现水平居中的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。css的基本语法是什么css的基本语法是:1、css规则由选择器和一条或多条声明两个部...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作