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

 

posted @ 2018-01-20 12:49  Veritas_des_Liberty  阅读(571)  评论(0编辑  收藏  举报