用加减乘除求平方根啊解决办法

用加减乘除求平方根啊~~~
用C写,输入求平方根的数字跟用户猜测的结果,然后用穷尽的方法算出最确切的平方根

大虾们帮帮手。。。

------解决方案--------------------
泰勒级数,展开就可以。
------解决方案--------------------
你把问题讲清楚点。是给一个整数,求出确切的整数平方根,还是给一个任意数,求出一个确切的小数平方根?
------解决方案--------------------
这里有个公式:
x(n+1)=a/x(n)
当n趋向于无穷时,x(n)趋向于a的平方根
(好像是谭浩强的练习题)
------解决方案--------------------
探讨
泰勒级数,展开就可以。

------解决方案--------------------
x = (x + a/x) / 2.;迭代。收敛速度比泰勒快多了
------解决方案--------------------
牛顿迭代,
------解决方案--------------------
牛顿迭代,卡马克的方法,目前最快的开方了
------解决方案--------------------
探讨
x = (x + a/x) / 2.;迭代。收敛速度比泰勒快多了

------解决方案--------------------
牛顿插值 
其他也一样
------解决方案--------------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void)
{
double num,x;

puts("enter a float:");
scanf("%lf",&num);
puts("Then enter jin si ping fang gen:");
scanf("%lf",&x);
do
{
x=x-(x*x-num)/(2*x);
}while(fabs(x*x-num)>0.00001);//精确度为0.00001
printf("%lf ping fang gen:%f ,%f\n",num,x,sqrt(num));//sqrt(num)用来验证结果
system("pause");
return 0;
}
------解决方案--------------------
牛顿迭代法: 取一个端点的切线,把切线与x轴的交战作为更好的根的逼近。
假如你要求5的平方根,可以设它的根为X,则有x的平方等于5,还可以建立一个函数如f=x^2-5.
然后对函数作泰勒展开:
将f(x)=0在初始值x0作泰勒展开:
f(x)=f(x0)+f'(x0)+(x-x0)+(f"(x0)/2)*(x-x0)^2+......
取展开式的线性部分作为f(x)约等于零的近似值,则有
f(x0)+f'(x0)(x-x0)约等于0
设f'(x0)不等于0,则
x=x0-f(x0)/f'(x0) (f'(x0)是导函数) 
将函数f=x^2-5代入上式作代数运算后,得
x=(x0+5/x0)/2 ----------这就是所要的迭代公式!
以上计算步骤同样可用于计算开三次方,开n次方!



------解决方案--------------------
要这么复杂干嘛;楼主要的就是穷举法

给定一个整数,N,设它的平方根为k,则一定有
k<=N/2

据此,可以有这样的暴力方法

for(i=0;i</N/2;i++){
if(i*i==N)
break;
}
如果是非整数么,就用插值法吧

------解决方案--------------------
归根结底是个数学问题~~
泰勒展开
牛顿迭代
两个最常用的办法。

再深究下去该成数学课了……
------解决方案--------------------
C/C++ code

int main() 
{ 
    int iTobeSquared = 45;

    double toTry = 1;
    double toTryBit = 1;

    while(toTryBit > 0.000000000000001) // concise
    {
        while((toTry + toTryBit) * (toTry + toTryBit) <= iTobeSquared )
            toTry += toTryBit;
        toTryBit /= 10;
    }

    cout << toTry << endl;
    return 0;
}