手工開平方

手工開平方步驟

1.數字小於2 平方根為1 結束

2.數字分段 放入鏈表

以小數點為原點 向兩邊數 兩兩為一段 小數點給小數點前面一段 如135.235  1,35.,23,5   4段 段閒用逗號分隔了

2.幹掉鏈頭當作處理數

3.根據規則運算處理數求出最大試乘數 和餘數

規則如下

積=操作數.replace(".","");

商數 = (int) 商==null ? "0" : 商.replace(".",""); 

因子 = 商數 * 20;

for(試乘數=9 ; (試乘數 >0 && !( (因子 + 試乘數) * 試乘數 <= 積 && (因子 + 試乘數 + 1) * (試乘數 + 1) > 積) ); 因子--);

扫描二维码关注公众号,回复: 2517368 查看本文章

餘數 = 試乘數==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

猜你喜欢

转载自blog.csdn.net/nailsoul/article/details/81252418