- 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
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫