手工開平方步驟
1.數字小於2 平方根為1 結束
2.數字分段 放入鏈表
以小數點為原點 向兩邊數 兩兩為一段 小數點給小數點前面一段 如135.235 1,35.,23,5 4段 段閒用逗號分隔了
2.幹掉鏈頭當作處理數
3.根據規則運算處理數求出最大試乘數 和餘數
規則如下
積=操作數.replace(".","");
商數 = (int) 商==null ? "0" : 商.replace(".","");
因子 = 商數 * 20;
for(試乘數=9 ; (試乘數 >0 && !( (因子 + 試乘數) * 試乘數 <= 積 && (因子 + 試乘數 + 1) * (試乘數 + 1) > 積) ); 因子--);
餘數 = 試乘數==0 ? 0 : 積 - (因子 + 試乘數) * 試乘數;
4.把試數歸入商中
5.操作數如果是小數點結尾把小數點歸入商中
5.幹掉鏈頭得到的數放到餘數尾部當作處理數
6.處理數!=0 && 還想玩玩 ? goto 3 : print '平方根%s' % 商 && exit();
例子 40204.25 求平方根
40200.25 分段為 4,02,00.25 或 4,02,00.25.0 或4,02,00.25.00.00.00.00
積為4 最大試乘數為2 (0 * 20 +2) * 2 <=4 滿足 (0 * 20+2+1) * (2+1) > 4 滿足 餘數為0 商為2
績為2 2*20 > 2 不會滿足上面的條件 所以商為20 餘數為2
積為200 20*20 > 200 不會滿足上面的條件 所以商為200. 餘數為20
積為20025 最大試乘數為5 (200 * 20 +5) * 5 <=20025 滿足 (200 * 20 +5+1) * (5+1) > 20025 滿足 餘數為0 商為200.5
沒有處理數了 所以平方根為200.5