手工開平方

2021-08-21 20:07:07 字數 993 閱讀 9730

手工開平方步驟

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

記錄幾個開平方演算法

整數開平方演算法 本演算法只採用移位 加減法 判斷和迴圈實現,因為它不需要浮點運算,也不需要乘除運算,因此可以很方便地運用到各種晶元上去。我們先來看看10進製下是如何手工計算開方的。先看下面兩個算式,x 10 p q 1 公式 1 左右平方之後得 x 2 100 p 2 20pq q 2 2 現在假...

記錄幾個開平方演算法

整數開平方演算法 本演算法只採用移位 加減法 判斷和迴圈實現,因為它不需要浮點運算,也不需要乘除運算,因此可以很方便地運用到各種晶元上去。我們先來看看10進製下是如何手工計算開方的。先看下面兩個算式,x 10 p q 1 公式 1 左右平方之後得 x 2 100 p 2 20pq q 2 2 現在假...

C語言 開平方判斷素數

輸入格式 輸入在第一行給出乙個正整數n 10 隨後n行,每行給出乙個小於231的需要判斷的正整數。輸出格式 對每個需要判斷的正整數,如果它是素數,則在一行中輸出 yes 否則輸出 no 輸入樣例 2 11111 輸出樣例 yes no題目分析 判斷n是否是素數,其實不必被2 n 1 範圍內的各整數除...