如果一个整数的所有因子(包括1,但不包括这个数本身)之和与该数相等,则称这个数位完数.例如6=1+2+3,所以6是完数,编写一个函数来判断m是否为完数,函数返回值为boolean.主调程序在列表框中

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/06 09:29:05

如果一个整数的所有因子(包括1,但不包括这个数本身)之和与该数相等,则称这个数位完数.例如6=1+2+3,所以6是完数,编写一个函数来判断m是否为完数,函数返回值为boolean.主调程序在列表框中
如果一个整数的所有因子(包括1,但不包括这个数本身)之和与该数相等,则称这个数位完数.例如6=1+2+3,
所以6是完数,编写一个函数来判断m是否为完数,函数返回值为boolean.主调程序在列表框中显示1000以内的完数.用VB编写.
我写的程序如下,他显示其中mid函数的length不能为0,而且显示结果如下
6=
28=
496=
没有后面因子相加.求高手指导.
Public Class f7
Private Sub f7_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load
Dim i%,ss$
Label1.Text = "1000以内的完数为:" & vbCrLf
For i = 1 To 1000
If f(i,ss) Then
Label1.Text &= i & "=" & Mid(ss,1,Len(ss) - 1) & vbCrLf
End If
Next
End Sub
Function f(ByRef a As Integer,ByVal b As String) As Boolean
b = ""
Dim i%,sum%
sum = 0
For i = 1 To a \ 2
If a Mod i = 0 Then
sum += i
b &= i & "+"
End If
Next
If sum = a Then f = True Else f = False
Return f
End Function
End Class

如果一个整数的所有因子(包括1,但不包括这个数本身)之和与该数相等,则称这个数位完数.例如6=1+2+3,所以6是完数,编写一个函数来判断m是否为完数,函数返回值为boolean.主调程序在列表框中
Function f(ByRef a As Integer, ByVal b As String) As Boolean
应该变为:
Function f(ByVal a As Integer, ByRef b As String) As Boolean