English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

阿姆斯壯數:是指該數(n位數)與該數之各位數的n次方和相等,則此數即為阿姆斯壯數。
如「8208」即為阿姆斯壯數:8208為四位數,而各位數的四次方和「84+24+04+84」正好為「8208」,因此8208是一個阿姆斯壯數。



原理是這樣
可以幫我寫一個阿姆斯壯數的程式嗎

2007-02-08 05:57:35 · 3 個解答 · 發問者 ? 1 in 電腦與網際網路 程式設計

3 個解答


'幫亡靈兄改一下bug,不能發表意見只好用回答了
圖片參考:http://tw.yimg.com/i/tw/blog/smiley/36.gif

Private Sub Command1_Click()
Dim I%, N&, S&

N = Abs(Int(Val(InputBox("請輸入:", "", 8208))))
For I = 1 To Len(CStr(N))
S = S + Mid(N, I, 1) ^ Len(CStr(N))
Next
MsgBox IIf(S = N, "", "不") & "是阿姆斯壯數"
End Sub


2007-02-08 17:32:16 補充:
亡靈兄您別太自責,這情形每個人都會發生低....
此法應該可改成
S=N
For I = 1 To Len(CStr(N))
  S = S - Mid(N, I, 1) ^ Len(CStr(N))
  If S < 0 Then Exit For
Next

If S=0 Then Yes Else No

2007-02-08 17:35:48 補充:
這樣速度會比較快吧?

2007-02-08 08:50:08 · answer #1 · answered by W.J.S. 7 · 0 0

到下面的網址看看吧

▶▶http://*****

2014-07-03 12:27:23 · answer #2 · answered by Anonymous · 0 0

Private Sub Command1_Click()
Dim I%, InN&, SumN%
InN = InputBox("請輸入:")
For I = 1 To Len(InN)
SumN = SumN + Val(Mid(InN, I, 1)) ^ 4
Next I
MsgBox IIf(SumN = InN, "", "不") & "是阿姆斯壯數"
End Sub

2007-02-08 13:12:48 補充:
InN宣告成長整數,SumN只宣告成整數好像怪怪的..
更正 Dim SumN&

2007-02-08 14:57:26 補充:
嗚~~~又是bug~~~(懊惱的叩首中~~~~Orz)
叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.叩.
請把最佳解給真正好的答案=WJS大的答案吧...
我不想明明是爛答案,卻為了最佳解和採用率而不擇手段

2007-02-09 11:48:21 補充:
不愧是WJS大師,總是可以想出比較好的方法...

2007-02-08 08:04:05 · answer #3 · answered by 幽靈 5 · 0 0

fedest.com, questions and answers