您的位置:首页 > 其它

整数开方 sqrt

2014-02-26 14:10 232 查看
#include<iostream>

using namespace std;

int sqrt(int x)

{

inttest, step;

if(x < 0)

return-1;

if(x == 0)

return0;

step=
1<<15;


test=
0;


while(step != 0)


{


registerint h;

h=
(
test + step) * (test + step);

if (h <= x)

test += step;

if (h == x)

break;

step>>= 1;


}
//至此,已找到比根号下x小的最接近根号下x的值。
if(x-test*test<=(test+1)*(test+1)-x) //此步骤判断test还是test+1更接近根号下x
return test;
else
return test+1;
}
int
main()

{

[/b]
intS[20],i;

[/b]
cout<<"待开方数值:"<<endl;

for(i=0;i<20;i++)


{


S[i]=rand()0;

cout<<S[i]<<'\t';


}


cout<<endl<<"开方结果:"<<endl;

for(i=0;i<20;i++)

cout<<sqrt(S[i])<<'\t';

return 0;

}

运行结果如下图所示:



sqrt" TITLE="整数开方 sqrt" />


第三个数34的开方结果不是5而是6,因为34-5*5=9,而6*6-34=2,2<9,所以开方结果取的是6.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: