用VB编程:编写一个函数判断已知数M,是否为“完”数,“完数”为该因子之和(如6=1+2+3)

来源:百度知道 编辑:UC知道 时间:2024/05/18 08:14:27
谢谢各位。。。

楼上的写的也太复杂了,占内存,还运算速度慢
Option Explicit
Private Sub Command1_Click() '这是调用部分,打印出10000内的所有完数
Dim j As Integer
For j = 2 To 10000
If IsPerfectNumber(j) Then Print j
Next
End Sub

Function IsPerfectNumber(n As Integer) As Boolean '这是判断是否为完数
Dim i As Integer, fact As Integer, sqrt As Integer, sum As Integer
If n < 2 Then Exit Function
sqrt = Int(Sqr(n))
sum = 1
For i = 2 To sqrt '只需算到开方为止
fact = n \ i
If fact = n / i Then '如果被i整除,则fact也是因子
sum = sum + fact + i
End If
Next
IsPerfectNumber = (sum = n)
End Function

Dim m As Integer, i As Integer, j As Integer, k As Integer
Dim a()
m = Val(Text1.Text)

For h = 1 To m
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