vb过程函数,求1000以内的完数,返回值是逻辑型,谁能伴我修改一下运行显示要是这样的格式:6=1+2+3

来源:百度知道 编辑:UC知道 时间:2024/09/18 06:26:45
Function isws(m As Integer) As Boolean
Dim i%, s%
For i = 1 To m / 2
If m Mod i = 0 Then
s = s + i
End If
Next i
If s = m Then
isws = True
Else
isws = False
End If
isws = i

End Function

Private Sub Form_Click()
Dim i%, c As Boolean

Print "1000以内的完数为:"
For i = 1 To 1000
c = isws(i)
Next i
If c = True Then
Print i
End If

End Sub

Private Function isws(m As Integer, splus As String) As Boolean
Dim i%, s%
For i = 1 To m / 2
If m Mod i = 0 Then
s = s + i
End If
Next i
If s = m Then '如果是完数,则重新循环,将各因子找出来
splus = m & "=1" '因为1是所有数的因子,所以先找出来,接下来的循环可以从2开始
For i = 2 To m / 2
If m Mod i = 0 Then
splus = splus & "+" & i
End If
Next i
isws = True
Else
isws = False
End If
End Function

Private Sub Form_Click()
Dim i%, sp$
Print "1000以内的完数为:"
For i = 1 To 1000
If isws(i, sp) Then Print sp 'sp是按地址传递的,所以得到的值是函数isws中最后生成的splus值
Next i
End Sub

试试这个:

Function isws(m As Integer)
Dim i, s, d
For i = 1 To m / 2
If m Mod i = 0 Then
s = s + i
d = d & "+" & i
End If