用python寻找相亲数(包含完美数、相亲数链)
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
2、计算约数的和:def yueshuhe(n): b=yueshu(n) c=sum(b) return c
3、这样,就可以寻找10000以内的相亲数:for i in range(1,10000): j=yueshuhe(i) if i<j and i==yueshuhe(j): print((i,j))
4、如果a的约数和等于a,就称a为完美数。下面是寻找10000以内的完美数:for i in range(1,10000): if i==yueshuhe(i): print(i)
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))
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)
7、2115324引出一个四阶相亲数链:i=2115324for j in range(10): k=yueshuhe(i) print(k) i=k