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