vb求完全数,请高手帮我改一下!

来源:百度知道 编辑:UC知道 时间:2024/05/02 07:48:52
Private Sub Form_click()
Dim M&, N&, x&, y&, i&
N = InputBox("请输入N的值")
M = InputBox("请输入M的值")
If M <= 0 Or N <= 0 Then
MsgBox "请输入一个正整数!", vbInformation + vbOKOnly, 错误
Exit Sub
ElseIf N > M Then MsgBox "请输入N满足N<M", vbInformation + vbOKOnly, 错误
Exit Sub
End If
For x = N To M Step 1
y = 0
For i = 1 To x
If x Mod i = 0 Then y = y + i
If y = x Then Print x; "是一个完全数。"
Next i
Next x
End Sub
不知道哪里不对,得不到正确的结果!

看来你还没有理解“完全数”。

1.完全数是是除本身的因数和等于本身。那么测试因数时只能从 1 试到(自己-1)
2.并不是没试一个数就判断是否为本身。而是除自身的“所有”因数。那么判断应该留在循环后

更改后:
Private Sub Form_Click()
Dim M&, N&, x&, y&, i&

N = InputBox("请输入N的值")
M = InputBox("请输入M的值")

If M <= 0 Or N <= 0 Then
MsgBox "请输入一个正整数!", vbInformation + vbOKOnly, "错误"
Exit Sub
ElseIf N > M Then MsgBox "请输入N满足N<M", vbInformation + vbOKOnly, "错误"
Exit Sub
End If

For x = N To M
y = 0
For i = 1 To (x - 1)
If x Mod i = 0 Then y = y + i
Next i
If y = x Then Print x; "是一个完全数。"
Next x

End Sub

友情提醒:

1.你的“错误”应该用引号引起来(即"错误")。

2.For里的Step 1可以省略,因为1是默认值。