亲密数:如果a的所有正因子和等于b,b的所有正因子和等于a,因子包括1但不包括本身,且a不等于b,则称a,b为亲密数
以下各组数字就是亲密数
具体VBA代码如下:
'亲密数
'1.对每一个数a,将其因子分解并存入数组Arr,再将因子之和存到变量b1
'2.再将因子之和b1进行因子分解,将因子保存到数组中Brr,再将因子之和存到变量b2
'3.或b2=a,并且b1<>b2,则找到一组亲密数a和b1
Sub Friendly_Number()
Dim i&, num&
Dim a&, b1&, b2&, j1&, j2&
Dim arr&(), Brr&()
Dim Count&, m&
Dim Str1$, Str2$
num = 10000 '
a = 2
Do While a <= num
ReDim arr(a) '
ReDim Brr(a)
j1 = 0: j2 = 0
b1 = 0: b2 = 0
Str1 = "": Str2 = ""
For i = 1 To Int(a / 2) + 1 '
If a Mod i = 0 Then 'a能被i整除
j1 = j1 + 1
arr(j1) = i '保存因子
b1 = b1 + i '累加因子之和
End If
Next i
For i = 1 To Int(b1 / 2) + 1 '
If b1 Mod i = 0 Then
j2 = j2 + 1
Brr(j2) = i '保存因子
b2 = b2 + i '累加因子之和
End If
Next i
If b2 = a And a < b1 Then
For i = 1 To j1
Str1 = Str1 & "+" & arr(i) 'a因子列表
Next i
For i = 1 To j2
Str2 = Str2 & "+" & Brr(i) 'b1因子列表
Next i
Count = Count + 1
With Sheet2
m = 5 + Count
.Cells(m, 1) = a
.Cells(m, 2) = b1
.Cells(m, 3) = Str1
.Cells(m, 4) = Str2
End With
End If
a = a + 1
Loop
Debug.Print Timer
End Sub