一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子是1,2,3,而6=1+2+3,因此6是完数。请编写程序,求出1000内的所有完数。(注意:输出格式示例一定要是:1+2+3=6)
一些循环不太懂,麻烦高手帮忙写一下并解释一下,在网上找了一个
Private Sub Form_Click()
Dim i As Integer, j As Integer, m As Integer
For i = 1 To 100 '这里先找出所有要筛选的书
m = 0
For j = 1 To i - 1 '这里找出要筛选的数的因数,不包括本身
If (i Mod j) = 0 Then
m = m + j '累加因数
If i = m Then '判断是否是完全数
Print i
End If
End If
Next j
Next i
End Sub
上面这个是直接输出结果的,帮忙改一下或者直接写一个也OK啊,实在不会了,带注释哦,需要弄懂才有用,光达到目的没啥效果。
数学比较差,就不重新写了```呵呵```直接改```
Private Sub Form_Click()
Dim i As Integer, j As Integer, m As Integer
Dim q As String '定义一个字符串用来放要输出的式子
For i = 1 To 100 '这里先找出所有要筛选的书
m = 0
q = "" '每次找因子之前清空字符串
For j = 1 To i - 1 '这里找出要筛选的数的因数,不包括本身
If (i Mod j) = 0 Then
m = m + j '累加因数
If (q = "") Then '每次找到因子加入q里面去
q = j
Else
q = q & "+" & j
End If
If i = m Then '判断是否是完全数
Print q & "=" & i '最后合并完整的式子并输出
End If
End If
Next j
Next i
End Sub
修改的地方都做了说明``
Private Sub Form_Click()
Dim i As Integer, j As Integer, m As Integer, str As String
Form1.Cls '清空输出
For i = 1 To 1000 '这里先找出所有要筛选的数
m = 0
str = ""
For j = 1 To i - 1 '这里找出要筛选的数的因数,不包括本身
If (i Mod j) = 0 Then
If str = "" Then '如果str还没有增加因子,则不用在前面加+
str = j '此因子为第一个因子
Else
str = str & "+" & j '此因子不是第一个因子,在前面加+
End If
m = m + j '累加因数
If i = m Then '判断是否是完全数
Print str & "=" & i
End If
End If
Next j
Next i
End Sub