题目要求:手算根号2,要求到小数点后50位以上;
结果:用牛顿迭代法迭代了150次,我的输出与Dev-C++自带的sqrt函数相同,但和网上搜索的不一样。
求大佬帮忙看看是哪里出了问题

代码如下:
#include<bits/stdc++.h>
using namespace std;
const double acc=1e-20;
const int dig=150;
const int MAXN=1e5+16;
int n=3 ;
double x[MAXN];
double f(double x){//函数x^2-2=0
return x*x-n;
}
double f1(double x){//该函数的倒数
return 2.0*x;
}
int main(){
//cin>>n;
freopen("test.out","w",stdout);
x[1]=2;
for(int i=1;i<=dig;i++){
if(i==5)x[i+1]-=0.0000000000000001;
x[i+1]=x[i]-f(x[i])/f1(x[i]);//牛顿迭代法
}
for(int i=1;i<=dig;i++) {
printf("%.152lf",x[i]);
cout<<endl;
}
printf("%.152lf",sqrt(n));
cout<<endl;
fclose(stdout);
}
我的输出:
1.4142135623730951454746218587388284504413604736328125
sqrt函数输出:
1.4142135623730951454746218587388284504413604736328125
网上的小数点后100位
1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727