用VB求出水仙花数

  • A+
所属分类:编程茶楼

水仙花数,也被称为阿姆斯特朗数,是指一个 n 位数,其各个位上的数字的 n 次幂之和等于这个数本身。例如,153 就是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。

当然,用 VB 求水仙花数有两种方法:

第一种: 使用 mod 取余法 +for 循环

关键知识点:

a = i \ 100 Mod 10   ' 求百位数
a = i \ 10 Mod 10    ' 求十位数
a = i \ 1 Mod 10     ' 求个位数 

开始实践:

Dim a, b As Integer

Private Sub Command1_Click()
Do
    a = Val(InputBox("请输入大于 0 的 3 位开始数", "提示"))
    If a > 99 And a < 1000 Then Exit Do
Loop
Do
    b = Val(InputBox("请输入大于 0 并且大于开始数的 3 位结束数", "提示"))
    If b > 99 And b > a And b < 1000 Then Exit Do
Loop
End Sub

Private Sub Command2_Click()
For i = a To b
    x = i \ 100 Mod 10
    y = i \ 10 Mod 10
    z = i \ 1 Mod 10
    If x ^ 3 + y ^ 3 + z ^ 3 = i Then
        Print "找出一个百位为" & x & "十位为" & y & "各位为" & z & "的数" & i
    End If
Next i
End Sub

第二种: 使用 mid 函数 +for 循环

关键知识点:

 x = Mid(i, 1, 1)   ' 从做左向右第 1 位开始取 1 位数字 
Dim a, b As Integer

Private Sub Command1_Click()
Do
    a = Val(InputBox("请输入大于 0 的 3 位开始数", "提示"))
    If a > 99 And a < 1000 Then Exit Do
Loop
Do
    b = Val(InputBox("请输入大于 0 并且大于开始数的 3 位结束数", "提示"))
    If b > 99 And b > a And b < 1000 Then Exit Do
Loop
End Sub

Private Sub Command2_Click()
For i = a To b
    x = Mid(i, 1, 1)
    y = Mid(i, 2, 1)
    z = Mid(i, 3, 1)
    If x ^ 3 + y ^ 3 + z ^ 3 = i Then
        Print "找出一个百位为" & x & "十位为" & y & "各位为" & z & "的数" & i
    End If
Next i
End Sub

运行结束后我们能发现,两串代码在 3 位数中得出的结果都是:

153,370,371,407

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: