X的平方根(二分)

Posted Veritas des Liberty

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了X的平方根(二分)相关的知识,希望对你有一定的参考价值。

设计函数int sqrt(int x),计算 xx 的平方根。

输入格式

输入一个 整数 xx,输出它的平方根。直到碰到文件结束符(EOF)为止。

输出格式

对于每组输入,输出一行一个整数,表示输入整数的平方根。

样例输入

1
2
3
4
5
6
7
8
9

样例输出

1
1
1
2
2
2
2
2
3

 

分析:牛顿迭代法

牛顿迭代法求平方根,主要是利用二次函数上的点的切线,与x轴的交点,然后再用x对应的函数图像上的点,做切线,不断的迭代,知道满足一个指定的精确度。

迭代公式

(x0 + a/x0)/2

  

技术分享图片
 1 #include <iostream>
 2 #include <cmath>
 3 #include <cstdio>
 4 using namespace std;
 5 
 6 int sqrt(int x){
 7     double t = 1.0;
 8     while(fabs(t * t - x) > 1e-6){
 9         t = (t + x / t) / 2;
10     }//牛顿迭代法
11     return t;
12 }
13 
14 int main(){
15     int x;
16     while(scanf("%d", &x) != EOF){
17         printf("%d\n",sqrt(x));
18     }
19     return 0;
20 }
View Code

 

以上是关于X的平方根(二分)的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode69. x 的平方根(二分)

69. x 的平方根-二分查找

X的平方根(二分)

x 的平方根(二分查找)

Leetcode——x 的平方根(二分)

二分法03:x 的平方根