如果一个数恰好等于它的因子(除自身外)之和,这个数就称为完数,例如,6的因子(除去自身)为1、2、3,而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
这段代码中存在以下几个问题: 没有声明变量的类型。 在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