Python 中的快乐数

pythonserver side programmingprogramming更新于 2025/11/2 0:44:17

在这里我们将看到如何检测数字 n 是否是快乐数。快乐数是一个数字,从任何正整数开始,用其数字的平方和替换该数字,这个过程将重复,直到它变成 1,否则它将无限循环。当找到 1 时,这些数字将成为快乐数。

假设数字为 19,则输出将为真,因为该数字是快乐数。从 19 可以看出,我们将得到

12 + 92 = 82

82 + 22 = 68

62 + 82 = 100

12 + 02 + 02 = 1

为了解决这个问题,我们将遵循以下步骤 −

  • 在这里我们将使用动态规划方法,并使用递归来解决这个问题
  • 基本情况是,当 n = 1 时,返回 true
  • 当 n 已经被访问时,返回false
  • 将 n 标记为已访问
  • n := n 作为字符串,l := n 中所有数字的列表
  • temp := 所有数字的平方和
  • 使用参数 temp 和已访问列表递归返回函数

示例

让我们看看下面的实现以便更好地理解 −

class Solution(object):
   def isHappy(self, n):
      """
      :type n: int
      :rtype: bool
      """
      return self.solve(n,{})
   def solve(self,n,visited):
      if n == 1:
         return True
      if n in visited:
         return False
      visited[n]= 1
      n = str(n)
      l = list(n)
      l = list(map(int,l))
      temp = 0
      for i in l:
         temp += (i**2)
      return self.solve(temp,visited)
ob1 = Solution()
op = ob1.isHappy(19)
print("Is Happy:",op)

输入

19

输出

Is Happy: True

相关文章


有用资源