用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

请选择技术分类

 *如果你找不到更细的分类,可以选择上级分类
当前位置:云代码 - 技术问答 - Python

我是一个VB新手,不太会这个

 悬赏:100|提问者:常九CJ|浏览:1107
举报|2022-06-06

如果一个数恰好等于它的因子(除自身外)之和,这个数就称为完数,例如,6的因子(除去自身)为123,而6=1+2+3,因此6是完数,编程找出100以内的所有完数以及完数的个数。

Private Sub Command1_Click()
For m = 1 To 100
s = 0
For i = 1 To m - 1
If m Mod i = 0 Then s = s + i
Next i
If s = m Then Print m
Next m
End Sub


我真的不知道哪里错了,还有怎么去求个数,帮帮我吧

我来回答

所有回答
举报|(26)|(26)2022-09-27
问题在于题中间的那部分
举报|(3)|(3)2022-12-10
这段代码中存在以下几个问题:

没有声明变量的类型。
在VB中,变量必须声明其类型,例如:

Dim s As Integer

没有使用Option Explicit强制声明变量。
在VB中,可以使用Option Explicit声明强制声明变量,避免因未声明变量导致的错误。例如:

Option Explicit

没有检查m是否为1。
在计算完全数时,需要排除m等于1的情况,因为1不是完全数。例如:

If m = 1 Then Continue For

没有指定Print输出的目标。
在VB中,Print输出的默认目标为Immediate窗口,如果希望将输出写入文件或者控制台,需要显式指定输出目标。例如:

Print m, Output:="output.txt"

修改后的代码如下:

Option Explicit

Private Sub Command1_Click()
Dim s As Integer
For m = 1 To 100
If m = 1 Then Continue For
s = 0
For i = 1 To m - 1
If m Mod i = 0 Then s = s + i
Next i
If s = m Then Print m, Output:="output.txt"
Next m
End Sub

相关提问