手工開平方步驟
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 範圍內的各整數除...