输入1个正数,求其平方根(不能使用sqrt库函数)

PS:参考代码中给出了两种迭代方式进行比较:1. 公式迭代 2. 二分迭代
参考代码:

#include <stdio.h>double GetAbsoluteValue(double num)
{return num > 0 ? num : -num;
}double GetSqrt2(double num)
{//此题进行一下扩展,原题是输入正整数,为了更加通用,改成输入一个正数//对整个结果空间进行二分搜索const double eps = 1e-13;//定义结果的精度double low, high, res;if (num < 1)//这里要考虑一下正数小于1的情况,二分的初值范围{low = num;high = 1;}else{low = 0;high = num;}res = (low + high) / 2;while (GetAbsoluteValue(res * res - num) >= eps){double dd = GetAbsoluteValue(res * res - num);if (res * res < num)low = res;elsehigh = res;res = (low + high) / 2;}return res;
}double GetSqrt(double num)
{//此题进行一下扩展,原题是输入正整数,为了更加通用,改成输入一个正数const double eps = 1e-11;//定义结果的精度double x = 0, y = num / 2;while (GetAbsoluteValue(y - x) >= eps){x = y;y = (x + num / x) / 2;}return x;
}int main()
{double num;scanf_s("%lf", &num);printf("------------------------------方法1:----------------------------------------\n");printf("sqrt(%lf)=%.6lf\n", num, GetSqrt(num));printf("\n");printf("------------------------------方法2:----------------------------------------\n");printf("sqrt(%lf)=%.6lf\n", num, GetSqrt2(num));return 0;
}

运行结果:

迭代法计算平方根(难度系数:2颗星)相关推荐

  1. 阿里巴巴难度系数五颗星的试题,小白竟然说很简单

    牛客网上有道阿里巴巴的面试题,网站显示该题难度系数五颗星 原题 代码如下: public class Base {private String baseName = "base"; ...

  2. java bigdecimal 开方_JAVA BigDecimal使用牛顿迭代法计算平方根(开方)

    Java中虽然可以用Math.sqrt获得某值的平方根,但是该值必须是double类型的.可是有些项目对数值精度要求比较高,我们一般会用BigDecimal来存储,BigDecimal并不提供计算平方 ...

  3. 牛顿迭代法计算平方根

    突然看到这个古老的算法,但是发现在图像渲染里用处可真是不小,所以拿出来研究一番 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛 ...

  4. python牛顿迭代法求平方根_牛顿迭代法计算平方根

    public static double sqrt(doublex) {if(x<0)return Double.NaN;//not a number double err=1e-15;doub ...

  5. 求a的b次幂的最后3位(难度:1颗星)

    问题描述: 输入a,b,其中a和b的范围是[2,999999999],求出a的b次幂的最后3位. PS: 如果最后三位是001,那么输出1就可以了. 问题分析: 这个问题的实际上是求a的b次幂mod ...

  6. 打渔晒网问题(难度:1颗星)

    问题描述: 如果1个渔夫从2011年1月1日开始每3天打一次渔,两天晒一次网,编程实现当输入2011年1月1日之后的任意1天,输出该渔夫是在打渔还是在晒网. 输入样例 2011 5 5 输出样例 晒网 ...

  7. python牛顿迭代法求平方根_牛顿迭代法计算平方根(Java,Python实现)

    牛顿法的作用是使用迭代的方法来求解函数方程的根.简单地说,牛顿法就是不断求取切线的过程.更多见:iii.run 数学推导 假设c为原数,t为c的根数. $$ t^2 \quad = \quad c$$ ...

  8. 正整数表示为连续自然数的和(难度:1颗星)

    问题描述: 输入一个正整数N,输出能相加等于N的联系序列的和(序列必须多于1项),如果这种序列存在,则输出所有这样的序列,如果不存在,则输出NULL. 例如:输入为15 输出: 1+2+3+4+5=1 ...

  9. 哥德巴赫猜想(难度:1颗星)

    问题描述: 哥德巴赫猜想的一种描述是,大于4的正偶数(我们假定1不是质数)都能分解成两个质数之和,我们假设这个猜想成立,我们现在输入一个大于4的正偶数N,输出所有能够满足哥德巴赫猜想的等式.(其中N的 ...

最新文章

  1. 1145 Hashing - Average Search Time
  2. 安装 Arduino IDE 中STM32 软件包,ESP8266软件包
  3. Win7新手系列教程:从安装到简单使用(新人必读)
  4. 对Xcode菜单选项的详细探索
  5. 《Java从入门到放弃》JavaSE入门篇:文件操作
  6. 电脑键盘上每个键的作用_眼看着淡出大众视野 键盘上Esc键的隐秘往事
  7. centos yum 安装python3.6+pip
  8. JSON.parse()解析单引号错误的问题
  9. 草稿-xpath了解-python 操作xpath小例子
  10. 同时两个版本php,查看“实现多个PHP版本共存和互相切换”的源代码
  11. 人工智能运行环境linux,Intel OpenVINO 人工智能推论环境搭建 (Linux) 第一章
  12. JavaScript 从数组中删除元素方法
  13. VINS(三)IMU预积分
  14. Tensorflow2.0:使用Keras自定义网络实战
  15. Android--读取通讯录并添加联系人
  16. 基于springboot旅游系统
  17. HTML实现简单水平导航栏
  18. 点云统一法线方向(未知视点)
  19. 实现ecshop一键发货功能的方法
  20. linux中dd命令详解,Linux dd命令详解

热门文章

  1. uni-app注册全局组件
  2. python打印日志方法的使用
  3. 尚硅谷大数据Hadoop教程(Hadoop 3.x)P46遇到的问题
  4. SSM+微信小程序网易云音乐设计与实现 毕业设计-附源码261620
  5. Apache关联Weblogic启动时爆错!libstdc++.so.5
  6. 远程控制PLC实际案例——西门子SIMATIC S7-1200
  7. 最简单的个人辞职原因[范文7篇]
  8. 从虚拟光驱启动计算机,手把手教你使用win10/win8自带的”虚拟光驱“(资源管理器)挂载打开ISO镜像文件-系统操作与应用 -亦是美网络...
  9. 如果改计算机mac,怎么修改计算机mac_修改计算机mac
  10. 机器学习项目三:XGBoost人体卡路里消耗预测