java亲密数原理,零基础学算法->亲密数

亲密数:如果a的所有正因子和等于b,b的所有正因子和等于a,因子包括1但不包括本身,且a不等于b,则称a,b为亲密数

以下各组数字就是亲密数

5744356fd0be410584b72625eaf36d97.png

具体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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值