如果a的因子和等于b,b的因子和等于a,且a〈〉b,则称a,b为亲密数对。
如编程找出10000以内的亲密数来:
option explicit
dim i as long, j as long, x as long
private sub form_load()
me.show
for i = 1 to 10000
doevents
x = yzh(i)
if x <= 10000 and i < x then
if yzh(x) = i then
text1 = text1 & "(" & i & "," & x & ")" & chr(13) & chr(10)
yzhout (i)
yzhout (x)
end if
end if
next
text1 = text1 & "计算完成"
end sub
private function yzh(n as long) as long
yzh = 0
for j = 1 to n / 2
if n mod j = 0 then yzh = yzh + j
next
end function
private function yzhout(n as long) as long
dim yzh as long
text1 = text1 & n & "=1"
yzh = 1
for j = 2 to n / 2
if n mod j = 0 then
text1 = text1 & "+" & j
yzh = yzh + j
end if
next
text1 = text1 & "=" & yzh & chr(13) & chr(10)
end function
程序计算结果,有5组亲密数对,程序输出是:
(220,284)
220=1+2+4+5+10+11+20+22+44+55+110=284
284=1+2+4+71+142=220
(1184,1210)
1184=1+2+4+8+16+32+37+74+148+296+592=1210
1210=1+2+5+10+11+22+55+110+121+242+605=1184
(2620,2924)
2620=1+2+4+5+10+20+131+262+524+655+1310=2924
2924=1+2+4+17+34+43+68+86+172+731+1462=2620
(5020,5564)
5020=1+2+4+5+10+20+251+502+1004+1255+2510=5564
5564=1+2+4+13+26+52+107+214+428+1391+2782=5020
(6232,6368)
6232=1+2+4+8+19+38+41+76+82+152+164+328+779+1558+3116=6368
6368=1+2+4+8+16+32+199+398+796+1592+3184=6232
计算完成.