文章目录
  1. 1. Happy Number

Happy Number


题目要求我们去判断任意一个正整数是否为一个”Happy”数。那么什么事happy数呢?假设这个数为a,那么每次求出a的所有数位,计算它们的平方和,接着赋值给a。每次都重复这个过程,如果最终平方和为1,那么该数就是happy数。

比如:19就是个happy数,因为1^2 + 9^2 = 82; 8^2 + 2^2 = 68; 6^2 + 8^2 = 100; 1^2 + 0^2 + 0^2 = 1。

可以看出这个问题的关键点在于如何停止这个循环,整个计算过程是否是一个圈。这里我们使用龟兔赛跑算法来进行判断这个计算过程是否是一个圈。

我们使用两个变量,一个跑得快fastSum,一个跑得慢slowSumslowSum就正常的进行数位的平方求和,fastSumslowSum每次多做一次数位的平方求和,这样当两个数相等碰头的时候,那么就发现了一个圈,该数就不为happy数了;如果其中一个值为1了,那么该数就是happy数了。

文章目录
  1. 1. Happy Number