用python寻找相亲数(包含完美数、相亲数链)

2025-12-01 06:31:40

1、相亲数指的是满足以下要求的两个数字a和b:

a的约数和等于b,b的约数和等于a。

所以,先自定义一个函数,求出数字n的所有的约数:

def yueshu(n):

    a=[]

    for i in range(1,n):

        if n%i==0:

            a.append(i)

    return a

用python寻找相亲数(包含完美数、相亲数链)

2、计算约数的和:

def yueshuhe(n):

    b=yueshu(n)

    c=sum(b)

    return c

用python寻找相亲数(包含完美数、相亲数链)

3、这样,就可以寻找10000以内的相亲数:

for i in range(1,10000):

    j=yueshuhe(i)

    if i<j and i==yueshuhe(j):

        print((i,j))

用python寻找相亲数(包含完美数、相亲数链)

4、如果a的约数和等于a,就称a为完美数。

下面是寻找10000以内的完美数:

for i in range(1,10000):

    if i==yueshuhe(i):

        print(i)

用python寻找相亲数(包含完美数、相亲数链)

5、如果a的约数和是b,b的约数和是c,c的约数和是a,且a、b、c互不相等,那么就称(a,b,c)是3阶相亲数链。

10000以内没有3阶相亲数链。

for i in range(1,10000):

    j=yueshuhe(i)

    k=yueshuhe(j)

    if i<j and i==yueshuhe(k):

        print((i,j,k))

用python寻找相亲数(包含完美数、相亲数链)

6、20000以内的五阶相亲数链只有一组:

for i in range(0,20000):

    x=[i,]

    for j in range(5):

        k=yueshuhe(i)

        x.append(k)

        i=k

    if x[0]<x[1] and x[0]<x[2] and x[-1]==x[0]:

        print(x)

用python寻找相亲数(包含完美数、相亲数链)

7、2115324引出一个四阶相亲数链:

i=2115324

for j in range(10):

    k=yueshuhe(i)

    print(k)

    i=k

用python寻找相亲数(包含完美数、相亲数链)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢