当前位置:在线查询网 > 在线百科全书查询 > 亲密数

亲密数_在线百科全书查询


请输入要查询的词条内容:

亲密数




定义


如果a的因子和等于b,b的因子和等于a,因子包括1但不包括本身,且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

计算完成。

C语言的实现代码:

#include<stdio.h>

#define Max 10000

int fun(int x)

{

int sum=1,i;

for(i=2;i<=x/2;i++)if(x%i==0)sum=sum+i;

return sum;

}

void print(int x,int y)

{

int i;

printf("%d=1",x);

for(i=2;i<=x/2;i++)if(x%i==0)printf("+%d",i);

printf("=%d\",y);

}

int main()

{

int num=1,i,j,sum;

do{

sum=fun(num);

if(sum>num&&sum<=Max&&num==fun(sum))

{

printf("(%d,%d)\",num,sum);

print(num,sum);

print(sum,num);

}

}while(++num<=Max);

return 0;

}

相关分词: 亲密