前言

 

國高中老師有教一點點 Html 語法,

但是本人沒學過 C 語言.....

 

只是常常摸電腦,再加上修過一堂課叫做邏輯,

這可以算是我第一支正式的程式!

 

001  

 

下載連結:https://drive.google.com/open?id=1dhe2ViqI57ey1EvRkSQRoovy1nuYpSQR

以下的講解,建議同時配合著程式對照著看。


 

 

  程式介紹

 

在用之前,請到 Excel 選項裡面,公式的地方,

啟用反覆計算,然後次數改成 1。這樣就能看它逐步計算了。

可以隨便選一格空白的格子,然後按一下 Delete 鍵,它就會計算一輪了!

002  

 

首先,左上方 B5 的整數判別,是我在想怎麼判斷是不是整數,

於是底下的公式是: =IF(INT(B5)=B5, "整數", "非整數")

簡單來說,就是無條件捨去後是不是等於自己。

 

之後,F6 是輸入數字處,沒有公式 XDD

 

先講 F10 除數,公式:=IF(I10=2*F6, H12, 2)

意思是如果數字沒有換,那麼就用 H12 的數字;要不然,就從 2 開始。

換數字怎麼判斷 等一下再講,

設置這個判斷而不是直接用 H12 的原因是,想讓它在數字換的時候,從 2 重新跑。

 

F11 的整數判斷,公式:=IF(INT(F6/F10)=(F6/F10), 1, 0 )

(應該說是,整除判斷)

如果是就顯示 1,不是就顯示 0

 

F12 判斷是否要加,公式:=IF(F11=0, IF(F10>F8, 0, 1), 0)

因為 Excel 似乎沒辦法直接 "遙控" 另一格,讓另一格 +1

所以,就用這個判斷來顯示 1,然後讓另一格加它。

公式簡單來說,就是如果整除,就不加了;如果不整除,就繼續加,顯示 1

F10>F8 的判斷 等一下再講。

 

H12 那格很簡單,就是:=F10+F12

把除數再加上 F12,所以會 +1 或者是 +0

 

這邊用的主要流程是,如果除數 X 不整除,

F12 顯示 +1,H12 就是 (X+1)

然後,下一輪,除數就會等於 H12如此就達到了除數一直變大的效果了!

 

有一個小撇步,就是如果要檢驗 Y 是不是質數,

只要檢測各個小於根號 Y 的質數就好了,

因為,Y 的因數一定是成對的,一個大的會對一個小的,

所以,小的那個,頂多是根號 Y,不會比根號 Y 還大! (要不然就不叫小的那個了....)

 

因此,F8 設計了一個加速計算的,公式:=INT(F6^(1/2))+1

它就是根號 Y  (其實比根號 Y 還大一點點)

F10>F8 的判斷,就是為了加速計算。

如果除數比 F8 還大,而且依然沒有整除,那麼就停止計算。

 

最後,來到了一個問題,就是 "到底該怎麼偵測數字換了沒?"

Finally,我找到了一個方法,就是用一格當作延遲者

F14 延遲者那格,公式:=IF(H12>0, F6, F6)

配合 I10 的換數字指標,公式:=F6+F14

數字換了之後,F14 在第一輪計算時,比較晚計算到。

然而,I10 比較早計算到。

舉例來說,原本待測數字是 133,現在改成了 137

I10 比 F14 還早計算,因此就會把 "待測的 137",加上 "F14 的 133"

所以,數字就不會是137 的兩倍了!

這就是除數那裡,換數字的判斷設定了。

如果I10 等於待測數字的兩倍,那麼就繼續算;如果不是等於兩倍,代表剛換數字,所以就從2 開始計算。

 

F17 結果那格,公式滿長的:=IF(F6=F10, "它是質數", IF(F12=0, IF(F11=0, "它是質數", "不是質數,最小公因數是"), "計算中..."))

意思是如果除數 = 待測數字,就顯示 "它是質數"

如果還不等於,就看是不是還在加。還在加就顯示 "計算中...."。

    如果不加了,那要判斷是不是整除了。如果也整除了,就顯示 "不是質數,最小公因數是"。

    如果尚未整除,但是不加了....  為什麼尚未整除,數字比待測小,卻不加了呢?

那是因為加速計算的判斷,已經過了根號Y了,所以顯示 "它是質數"

 

其實底下還有一格,F18 那格,公式:=IF(F12=0, IF(F11=1, F10, ""), "")

意思是如果不加了,而且整除,就會顯示出除數。不然都不顯示。

這就是配合結果那格,"最小公因數是 xxx "

11  

 

arrow
arrow

    Davidhu127 發表在 痞客邦 留言(2) 人氣()