经典C语言算法题之快乐数

    科技2022-07-15  114

    快乐数解法-很快乐

    1、题目描述2、题目分析3、代码实现4、题解心得


    1、题目描述

    编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。

    示例: 输入:19 输出:true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1


    2、题目分析

    解题思路

    ①判断n==1 ②具体思路如图解:

    ③细节注意:while判断需要配合result和每个数的位数n,不然31、91这类的数就会只算一次就跳出而输出

    3、代码实现

    代码如下:

    bool isHappy(int n) { int temp=0; int result=0; if(n==1)return true; while(result!=1||n!=0) { temp=n%10; n/=10; result=temp*temp+result; if(result==1&&n==0)return true; if(n==0) { n=result; result=0; if (n == 4 || n == 16 || n == 37 || n == 58 || n == 89 || n == 145 || n == 42 || n == 20)return false; } } return false; }

    4、题解心得

    1、这道题官方给出的解答也是判断循环节,不足之处在于while循环的运算时间较多,有能力的可以考虑用更佳的代码实现,欢迎评论交流,一起打怪升级! 2、欢迎关注 ID:zhd5120153951 博客域名:https://blog.csdn.net/zhd5120153951

    Processed: 0.016, SQL: 8