整数开平方根

今天被问到如何求一个整数的平方根,不知,速查之,得下面一程序:


unsigned int sqrt(unsigned int n){
unsigned int a;
for (a=0;n>=(2a)+1;n-=(2a++)+1);
return a;
}

厄,仔细一看,它的原理其实也很简单,可以用下图表示:
{0,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4……}