怎么判断一个数字是否是快乐数

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」 定义为:

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。

从题目我们可以知道,不论数字,后面一定会在某次变成个位数,所以我们只需知道1~9中有哪几个是快乐数就可以解决这题,经过分析,除了1以外,7到最终也会1。到这里已经将题目做完了一半,现在我们只需分析大于9的数就行,所以我们根据上面的定义,将数字转换为个位数就行,然后我们就判断他是不是7或者1,如果是就返回true,如果不是就返回false,

以下是代码。

bool isHappy(int n) {

    while (n > 9)//将n最终转换为个位数

    {

        int sum = 0;

        while (n)//将每位的数的平方加起来

        {

            sum += pow((n % 10), 2);

            n /= 10;

        }

        n = sum;

    }

    if (n == 1||n==7)//判断是否是1或者7

        return true;

    return false;

}

你可能感兴趣的:(c语言,leetcode)