041 · Happy Number

algorithm
Published

June 22, 2026

Problem

给定一个正整数 n

请判断:n 是否是一个快乐数。

快乐数的定义是:

  1. n 开始
  2. 把这个数替换成它每一位数字的平方和
  3. 不断重复这个过程

如果这个过程最终变成 1,那么 n 就是快乐数。

如果这个过程一直重复,但永远不会变成 1,那么 n 就不是快乐数。

例如:

n = 19

计算过程是:

1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

最终变成了 1,所以答案是:

true

再比如:

n = 2

这个过程不会变成 1,所以答案是:

false

Examples

示例 1

Input:  n = 19
Output: true

解释:19 经过若干次“各位数字平方和”的转换后,会变成 1

示例 2

Input:  n = 2
Output: false

解释:从 2 开始重复转换,最终不会得到 1

示例 3

Input:  n = 1
Output: true

解释:1 本身已经是 1,所以它是快乐数。

Constraints

  • \(1 \leq\) n \(\leq 2^{31} - 1\)