張貼者:2010年5月29日 上午6:38Administrator ExcelHelp
[
已更新 2010年5月29日 上午6:39
]
同事問我,Excel有沒有函數顯示一個整數的所有因數,例如 12 就顯示「3*4」、16 就顯示「2*2*2*2」。 我翻了一翻說明,只找到最大公因數和最小公倍數的函數。 我想,利用recursion也不難做,於是毅然寫了一個小函數供大家參考。程式已經比我想像中簡單,但大家可以看看有沒有辦法寫得更精簡。
語法:
' 利用recursive function,把一個整數的因數顯示出來。 ' 用法:AllFactors(n) Function AllFactors(iNo As Integer) As String Dim i As Integer Dim sgTemp As Single For i = 2 To iNo - 1 sgTemp = iNo / i If sgTemp = Int(sgTemp) Then AllFactors = Trim(Str(i)) & "*" & AllFactors(Int(sgTemp)) Exit For End If Next i ' 到這一步還沒有得到因數,代表這是一個質數(prime number) If AllFactors = "" Then AllFactors = Trim(Str(iNo)) End If End Function
|
|
執行後,就像這樣:  |
|
|
|
|
 Updating...
Ĉ Administrator ExcelHelp, 2010年5月29日 上午6:39
|