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;
    }
}
相关推荐
今儿敲了吗2 分钟前
27| 魔法封印
数据结构·c++·笔记·学习·算法
honortech7 分钟前
算法题中的 mid 中点问题
算法
今儿敲了吗8 分钟前
30| 木材加工
数据结构·c++·笔记·学习·算法
独自破碎E13 分钟前
BISHI66 子数列求积
android·java·开发语言
WW_千谷山4_sch14 分钟前
MYOJ_7789:(洛谷P3388)【模板】割点(割顶)(tarjan算法)
c++·算法·深度优先·图论
WZ1881046386915 分钟前
LeetCode第131题
算法·leetcode
锅包一切15 分钟前
PART7 队列
c++·学习·算法·leetcode·力扣·刷题·队列
爱学习的小可爱卢19 分钟前
JavaSE基础-Java String不可变性深度解析
java·javase
Maỿbe20 分钟前
动态规划之子数组问题
算法·动态规划
List<String> error_P22 分钟前
经典回溯算法解析
python·算法