algorithm++:一个整数称为是:【幸运数】,如果这个整数的各位数字的平方和为1或者反复计算各位数字的平方和为1 例如 19 是个幸运数

1):一个整数称为是:【幸运数】,如果这个整数的各位数字的平方和为1或者反复计算各位数字的平方和为1 例如 19 是个幸运数

 

coding:java程序实现

复制代码
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

public class XingYunShu {

    List<Integer> list = new ArrayList<>();

    @Test
    public void demo() {
        long startTime = System.currentTimeMillis();
        // 100 以内的幸运数
        for (int i = 0; i < 100; i++) {
            boolean flag = isLuckyNumber(i);
            System.out.println("是否为幸运数:{" + i + "}=" + flag);
        }
        long endTime = System.currentTimeMillis();
        System.out.println("程序运行时间:" + (endTime - startTime) + "ms");
    }

    // 判断是否为幸运数
    public boolean isLuckyNumber(Integer num) {
        List<Integer> integerList = splitNum(num);
        Integer count = 0;
        for (Integer l : integerList) {
            count += l * l;
        }
        if (count == 1) {
            return true;
        }
        if (list.contains(count)) {
            return false;
        }
        list.add(count);
        return isLuckyNumber(count);
    }
    // 把一个整数拆分为单个数值
    public List<Integer> splitNum(Integer num) {
        List<Integer> list = new ArrayList<Integer>();
        int length = (num + "").length();
        for (int i = length - 1; i >= 0; i--) {
            list.add(num % 10);
            num /= 10;
        }
        return list;
    }

}
复制代码

 

将一个整数方式拆分的方式还有很多种,比如 number.toCharArray();  这里避免了类型之间的转换。

有人会问道 类型之间的转换很消耗资源吗?

java设计模式 的核心就是多态,各种流行的框架都有大量类型转换的操作。

再烂的编程语言也不在乎这点资源,更何况java和c#。

稍微复杂点的算法,几层循环一嵌套就顶你这来回转换几万次,计算机没那么水,怎么说也是高科技是不。

 

posted @   coding++  阅读(468)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示