网教网

搜索
查看: 120|回复: 0

编程求一个正整数有几位,最快的方法是什么?

[复制链接]

1

主题

4

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2022-11-27 16:19:53 | 显示全部楼层 |阅读模式
目前在研究一个数学问题,涉及到一个循环可能要执行上万亿次,所以要优化速度。循环中有个语句是求一个正整数的位数,正常来说将数字转成字符串求长度就可以了,但是在循环次数如此多的情况下,转成字符串再求的效率就非常低了。目前我使用的是如下方法(java):
    static int len(long num) {
        if (num < 10) return 1;
        if (num < 100) return 2;
        if (num < 1000) return 3;
        if (num < 10000) return 4;
        if (num < 100000) return 5;
        if (num < 1000000) return 6;
        if (num < 10000000) return 7;
        if (num < 100000000) return 8;
        if (num < 1000000000) return 9;
        if (num < 10000000000L) return 10;
        if (num < 100000000000L) return 11;
        if (num < 1000000000000L) return 12;
        if (num < 10000000000000L) return 13;
        if (num < 100000000000000L) return 14;
        if (num < 1000000000000000L) return 15;
        if (num < 10000000000000000L) return 16;
        if (num < 100000000000000000L) return 17;
        if (num < 1000000000000000000L) return 18;
        return 0;
    }只是不知道还有没有更快的方式?另外,不知道比较大小的语句与其他语句(比如加减运算)的开销是否相同?毕竟上面的代码可能要执行的判断语句不少。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表