Demo20快乐数

复制代码
/**
 * 编写一个算法来判断一个数 n 是不是快乐数。
 * 「快乐数」 定义为:
 * 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
 * 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
 * 如果这个过程 结果为 1,那么这个数就是快乐数。
 * 如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
 */
java 复制代码
public class Demo20 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数");
        int n = sc.nextInt();
        if(n==1){
            System.out.println(n+"是快乐数");
        }
        Set<Integer> seen = new HashSet<>();
        while (!seen.contains(n)) {
            seen.add(n);
            n =getNext(n);
            if(n==1){
                System.out.println(n+"是快乐数");
                return;
            }
        }
        System.out.println(n+"不是快乐数");
    }


    public static int getNext(int n) {
        int totalSum = 0;

        while (n > 0) {
            totalSum += Math.pow(n % 10, 2);
            n /= 10;
        }

        return totalSum;
    }
}
相关推荐
_OP_CHEN几秒前
【算法提高篇】(三)线段树之维护更多的信息:从基础到进阶的灵活运用
算法·蓝桥杯·线段树·c/c++·区间查询·acm/icpc·信息维护
mjhcsp1 分钟前
C++Lyndon 分解超详解析
c++·算法·lyndon
2501_9369603610 分钟前
ROS快速入门杰哥教程1-77残缺版
java·开发语言
Mr_health10 分钟前
leetcode:组合排列系列
算法·leetcode·职场和发展
小灵吖13 分钟前
LangChain4j 记忆化(ChatMemory)
java·后端
用户10859329934113 分钟前
Java集合框架完全指南
java
冬夜戏雪14 分钟前
Leetcode 颠倒二进制位/二进制求和
java·数据结构·算法
俩娃妈教编程17 分钟前
2023 年 09 月 二级真题(1)--小杨的 X 字矩阵
数据结构·c++·算法·双层循环
Never_Satisfied28 分钟前
在c#中,获取文件的大小
java·开发语言·c#
铸人28 分钟前
再论自然数全加和 - 欧拉伽马常数4
算法