python平方和数字链

将一个正整数所有数字的平方相加可得到一个新的数,不断重复这个过程直到新的数已 经在之前出现过,这样构成了一条数字链。 例如:

1->1

89->145->42->20->4->16->37->58->89

理论上证明了从任一正整数开始,平方和数字链最终都会到达1或89,因此寻找某正整数的平方和数字链到1或89即可。

自定义函数numsChain(num),寻找从num到1或89的平方和数字链中的所有数并将结果返回。主模块中从键盘输入一个数字字符串(正整数),调用numsChain()函数寻找并输出完整的平方和数字链。

输入
一个数值型数据
输出
数字链
样例输入
23
样例输出
23->13->10->1

img




n=int(input())

def f(x):
    a=0
    for i in str(x):
        a+=int(i)**2
    return a
def numsChain(n):
    t=[n]
    while t[-1]!=89 and  t[-1]!=1:
        t.append(f(t[-1]))
    for i in range(len(t)-1):
        print(t[i],end='->')
    print(t[-1])
numsChain(n)

你的采纳对我很有帮助!


def divide_num(num):
    s=0
    while num>0:
        s+=(num%10)**2
        num//=10
    return s
def numsChain(num):
    ans=[num]
    num=divide_num(num)
    ans.append(num)
    while num!=ans[0]:
        num=divide_num(num)
        ans.append(num)
        if ans[-1]==1:
            break
    print('->'.join([str(i) for i in ans]))