(就是一個很簡單的問題,本來就想發個微頭條,結果字數又超過了,隻能發成圖文了!
發現微頭條和文章編輯器的字數統計方法不一樣,而且結果相差很遠,同樣的内容微頭條竟然比文章多統計了 2370 - 1592 = 778 個字!)
#手動開平方#
大家在小學數學中一定都學過四則運算的計算方法,但是說到平方根計算方法,大家就不一定知道了。
實際上,早在秦朝,我國古代數學家就已經發現了,用算籌開平方的方法,這被記載在 《九章算術》中。後來,魏晉大數學家 劉徽,還在用 一張圖(見圖1)給出了 開平方的原理。
接下來,就讓小石頭 把 手動開平方的方法 介紹給大家。
※※※
■ 問題:設 A 是一個正整數,求 A的帶餘數平方根,即,求滿足,
A = a² r (r ≥ 0)
的 整數 a 和 r ,a 取最大值 。
● 當 A較小 時,我們可以從1開始,通過不斷嘗試,找到滿足,
a²≤A<(a 1)²
的正整數 a,就是所求平方根,然後計算出餘數,
r = A - a² ①
● 當A較大時,用①方法,效率低下,這時可以考慮将 a 分為 a,b 兩部分,設 b 部分的 位數為 n,則有,
a,b = a10ⁿ b
進而,有,
(a,b)² = (a10ⁿ b)² = a²10²ⁿ 2(a10ⁿ)b b² = a²10²ⁿ ((2a)10ⁿ b)b = a²10²ⁿ ((2a),b)b
于是,可以考慮将 A 也分為 A,B 兩部分,B 部分為 2n 位數,即有,
A,B = A10²ⁿ B
這樣,餘數為,
r = A,B - (a,b)² = (A10²ⁿ B) - (a²10²ⁿ ((2a),b)b) = (A - a²)10²ⁿ B - ((2a),b)b
其中,可以通過①方法求得 a 以及,
r₁ = A - a²
于是,有,
r = r₁10²ⁿ B - ((2a),b)b = r₁,B - ((2a),b)b
至此,可以從1開始,通過不斷嘗試,找到使得,
((2a),b)b ≤r₁,B<((2a),(b 1))(b 1)
的 正整數 b,從而 得到 平方根 a,b,最後計算出 餘數,
r = A,B - (a,b)² ②
就可以了。
● 如果 A 還要大,則 可以将 a 分為 a,b,c 三部分,讓 b和c 都是 n位,有,
a,b,c = (a,b)10ⁿ c
同時,将 A 分為 A,B,C 三部分,讓 B 和 C 都是 2n 位,有,
A,B,C = (A,B)10²ⁿ B
然後,與上面類似,可求得,
r = (A,B - (a,b)²)10²ⁿ C - ((2(a,b))10ⁿ b)b
其中,可以通過②方法,求得 a,b 以及
r₂ = A,B - (a,b)²
于是有,
r = r₂10²ⁿ C - ((2(a,b))10ⁿ c)c = r₂,C - ((2(a,b)),c)c
最後,類似②方法,求得 正整數 c,從而得到 平方根 a,b,c 和 餘數,
r = A,B,C - (a,b,c)²
★ 總結: 這樣,對于任意大的正整數 A 都可分為 A₁,A₂,...,Aᵩ,其中 除了 A₁(小于等于 2n 位)外,其它 A₂,...,Aᵩ 都是 2n 位,同時 将 a 分為 a₁,a₂,...,aᵩ ,其中 除了 a₁(小于等于 2n 位)外,其它 a₂,...,aᵩ 都是 n 位,然後,
* 通過①方法方法 可以 計算出 a₁ 以及 r₁ = A₁ - a₁²;
* 歸納假設,已經計算出了 a₁,...,aᵢ₋₁ 以及 rᵢ₋₁ = A₁,...,Aᵢ₋₁ - (a₁,...,aᵢ₋₁)²,于是有,
rᵢ = (A₁,...,Aᵢ₋₁ - (a₁,...,aᵢ₋₁)²)10²ⁿ Aᵢ - ((2a₁,...,aᵢ₋₁),aᵢ)aᵢ = rᵢ₋₁,Aᵣ - ((2(a₁,...,aᵢ₋₁)),aᵢ)aᵢ
用 ② 方法,可求得 aᵢ 以及 rᵢ;
通過歸納的方法,最終這求得,
平方根 a = a₂,...,aᵩ
餘數 r = rᵩ
■ 問題:對于任意 正小數A,求平方根a。
☆ 可以将 A 分為 A₁,A₂,...,Aᵩ.Aᵩ₊₁,Aᵩ₊₂, ... 其中除A₁外,其它部分都是 2n 位數(小數位數若不夠,可以補零),同時 将 a分為 a₁,a₂,...,aᵩ.aᵩ₊₁,aᵩ₊₂,...,其中除a₁外,其它部分都是 n 位數,然後按照 上面的歸納方法,遞歸到 需要的精度的 小數位數 e 即可,此時有:
a = a₁,a₂,...,aᵩ.aᵩ₊₁,aᵩ₊₂,...,aₑ
※※※
以上,就是手動開平方的原理。
實際運算中 取 n = 1,并使用豎式進行運算(見圖2),
具體步驟如下:
⒈ 從小數點起,向兩邊,将A按照兩位一組,分成 A₁,A₂,A₃,...,Aᵩ.Aᵩ₊₁, ...,其中 A₁ 可能不足兩位;
⒉ 以 A₁ 為目标, 嘗試 1 到 9,找到 滿足:
◆ 乘方 小于等于 目标,即, a₁² ≤ A₁;
的 a₁ 最大值 ,并計算出餘數 r₁;
⒊ 将 餘數 r₁ 與 A₂ 拼在一起得到 r₁,A₂,以其為目标,嘗試 1 到 9,找到 滿足:
◆ 拼接 2×a₁ 後 乘以 自己 小于等于 目标,即,(2×a₁),a₂ × a₂ ≤ r₁,A₂ ;
的 a₂ 的最大值,并計算出餘數 r₂;
⒋ 将 餘數 r₂ 與 A₂ 拼在一起得到 r₂,A₂,以其為目标,嘗試 1 到 9,找到 滿足:
◆ 拼接 2×(a₁,a₂) 後 乘以 自己 小于等于 目标,即,(2×a₁),a₂ × a₂ ≤ r₂,A₂;
的 a₃ 的最大值,并計算出餘數 r₃;
⒌ ... ...
... □
圖3 是一個實際的例子。
※※※
最後,用類似的原理,還可以 分析出來 手動開立方根 的方法,大家有興趣可以自己試一試。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!