整数开方 sqrt

  • Post author:
  • Post category:其他




#include



<iostream>





using







namespace







std




;



int





sqrt


(


int





x


)

{










int


test


,



step


;









if



(



x






< 0)















return



-1;












if



(



x






== 0)















return



0;












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


()




{









int


S


[20],


i


;








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;


}




运行结果如下图所示:


整数开方 <wbr>sqrt


第三个数34的开方结果不是5而是6,因为34-5*5=9,而6*6-34=2,2<9,所以开方结果取的是6.





版权声明:本文为pymqq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。