编写一个算法来判断一个数 n 是不是快乐数

it2025-02-07  5

“”" 编写一个算法来判断一个数 n 是不是快乐数。 快乐数定义为:对一个正整数,每一次将该数替换成它每个位置上的数字的平方和,然后重复这个过程 到这个数变为1,也可能是无限循环 但始终变不到1. 如果可以变为1,那么这个数就是快乐数。 如果n是快乐数就返回True:不是,则返回False.

输入:19 输出:true 解释: 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1

“”" “”" 20

2^2 + 0^2 = 4 4^2 =16 1^2 + 6^2=37 3^2 + 7^2 =58 5^2 + 8^2 = 89 8^2 + 9^2 = 145 1^2 + 4^2 + 5^2 = 42 4^2 + 2^2 = 20 “”"

vis = set() def hpnum(num): # num = 20 if num in vis: return False # val = 0 # for s in str(num): # val += int(s) ** 2 val = sum(int(s)**2 for s in str(num)) if val == 1: return True vis.add(num) return hpnum(val) print(hpnum(19)) 执行结果:True
最新回复(0)