Python程序打印1到100之间的所有快乐数
快乐数指的是对于一个正整数,每一次将该数各个位置上的数字平方后相加得到一个新数,再对新数进行同样的操作,直到最后得到数字1。如果最后得到了1,则该数为快乐数。类似的,如果一个数一直循环计算最后得到的数字不是1则这个数就是不快乐数。
下面是Python程序可以打印出1到100之间的所有快乐数:
def is_happy(num):
num_set = set()
while num != 1:
num = sum(int(i)*int(i) for i in str(num))
if num in num_set:
return False
else:
num_set.add(num)
return True
happy_nums = [num for num in range(1, 101) if is_happy(num)]
print(happy_nums)
这段代码的基本思路是定义一个is_happy
函数,该函数输入一个数字,返回该数字是否是快乐数。在函数内部,通过一个set
来储存出现过的数字,当计算过程中得到了出现过的数字时,表示出现了循环计算,此时直接返回False
。如果最后得到了1,则是快乐数,返回True
。
使用列表推导式,遍历1到100之间的所有数字,如果是快乐数则储存到列表中,最后打印该列表即可。
运行上述代码,打印出1到100之间的所有快乐数为:
[1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100]
结论
Python 代码可以十分简单地实现判断一个数字是否为快乐数的功能,并且可以通过函数和列表推导式实现在给定区间范围内寻找所有的快乐数。