大哥帮我看看这段VB的代码写得对吗

来源:百度知道 编辑:UC知道 时间:2024/05/29 15:21:03
'编写程序,求出1000之内的所有完数。完数是指一个数恰好等于它的因子之和。例如,6的因子为1,2,3;而6=1+2+3,即6是完数。
Private Sub Form_Load()
Dim a As Long
Dim b As Long
Dim c As Long
Dim d As Long
c = 1
For a = 1 To 1000
For b = 1 To a
d = a * b
If d = a + b + c Then
Print d&; "是完数"
End If
Next b
Next a
End Sub

代码错误

给你写个吧.

Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim intSum As Integer
For i = 1 To 1000
intSum = 0
For j = 1 To Int(i / 2)
If i Mod j = 0 Then intSum = intSum + j
Next j
If intSum = i Then Print i
Next i
End Sub

当然了 还有更简单的计算方法 .
在1000之内的答案是 6, 28, 496

Private Sub Form_Load()
Show
Dim m As Integer, i As Integer, j As Integer, k As Integer
Dim a()
For h = 1 To 1000
ReDim a(0)
j = 0
k = 0
For i = 1 To h - 1
If h Mod i = 0 Then
k = k + i
j = j + 1
ReDim Preserve a(j)
a(j) = i
End If
Next i
If h = k Then
Print h & "是完数,因为"
Print h; "=";
For i = 1 To UBound(a) - 1
Print a(i); "+";
Next i
Print a(i)
'Else
'Print m & "不是完数"
End If
Next h
End Sub

首先,完数的因数未必都是3个