若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.例如,又如,220的因子之和为l+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 13:13:08
若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.例如,又如,220的因子之和为l+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与

若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.例如,又如,220的因子之和为l+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与
若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.
例如,又如,220的因子之和为l+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与284为一对亲密数.
求3000以内的亲密数对.
编写一个自定义函数过程facsum(n as integer),函数的返回值是给正整数n的所有因子(包括1但不包括自身)之和.
在窗体的click 事件过程中调用已定义的函数facsum,寻找并在窗体上输出3000以内的所有亲密数对.在输出每对亲密数对时,要求小数在前,大数在后,并去掉重复的数对.

若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数.例如,又如,220的因子之和为l+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与
Private Sub form_Click()
  Dim i As Integer,j As Integer,k As Integer
  For i = 1 To 3000
    j = facsum(i)
    k = facsum(j)
    If i = k And i < j Then Print i; j
  Next i
End Sub


Function facsum(n As Integer) As Integer
  Dim s As Integer
  s = 0
  For i = 1 To n \ 2
    If n Mod i = 0 Then s = s + i
  Next i
  facsum = s
End Function