编写一个算法来判断一个数是不是“快乐数”。 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直 到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。 【样例输入】 32 【样例输出】 yes 【样例输入】 37 【样例输出】 no
时间: 2024-03-25 10:37:49 浏览: 165
好的,这是一个经典的算法问题,我很乐意为您解答。以下是Python代码实现:
```python
def isHappy(n):
seen = set()
while n != 1 and n not in seen:
seen.add(n)
n = sum(int(i)**2 for i in str(n))
return n == 1
n = int(input())
if isHappy(n):
print("yes")
else:
print("no")
```
代码的思路是,使用一个集合来记录每次计算的结果,如果出现了重复的结果,就说明进入了无限循环,此时返回 `False`。如果计算出的结果为 1,就说明这个数是快乐数,返回 `True`。
在这个代码中,我们首先定义了一个 `isHappy` 函数,它的参数是一个正整数 `n`,返回值是一个布尔值,表示这个数是否是快乐数。这个函数中使用了一个 `seen` 集合来记录每次计算的结果,初始时为空集合。然后进入一个循环,如果 `n` 的值为 1 或者 `n` 已经在 `seen` 集合中出现过,就跳出循环。否则,将 `n` 加入 `seen` 集合中,然后计算 `n` 的每个位置上的数字的平方和,并将结果赋值给 `n`。最后,在循环结束后,判断 `n` 的值是否为 1,如果是,就返回 `True`,否则返回 `False`。
接着,我们读入一个正整数 `n`,并使用 `isHappy` 函数来判断它是否是快乐数。如果是,就输出 `"yes"`,否则输出 `"no"`。
阅读全文