/**
计算机组成原理--迭代法求根号a
x=sqrt(a)
Xn+1=(Xn+b/Xn)/2
**/
#include<stdio.h>
#include<math.h>
double Sqrt(double e,double a)
{
if(a<0) return -1;//负数出错
double x1=10,x2=10;//初始状态 ,只要不取负数和0就行
x2=(x1+a/x1)/2;//第一次迭代
while(fabs(x1-x2)>e)
{
x1=x2;
x2=(x1+a/x1)/2;
}
return (x2+x1)/2;
}
int main()
{
double x;
x=Sqrt(0.00001,3);
printf("%lf\n",x);
return 1;
}