对于超过整型表示范围的大数,欲求其平方根,可以用浮点数来表示。浮点数的表示范围大于整型
例:jlu 2051
转载
#include <stdio.h>
#include <string.h>
#include <math.h>
//8const double EPS = 1e-3;
int main(void)
{
freopen("b.txt","r",stdin);
char str[35];
while( scanf("%s", str), strcmp(str, "0") )//不能直接输入double型变量,不然一定会出错
{
double value = 0.0, power = 1.0;
for( int i=strlen(str)-1; i >= 0; --i )
{
value += (str[i]-'0')*power; //用pow()可能会导致精度出问题!
power *= 10;
}
printf("%.0f\n", floor(sqrt(value)));
}
return 0;
}
另外还有牛顿迭代法求平方根
- double fun(double a, double x0)
- {
- double x1, y;
- x1=(x0+ a/x0)/2.0;
- /********found********/
- if( fabs(x1-x0)>=e )
- y=fun(a,x1);
- else
- y=x1;
- return y;
- }