温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java经典算法实例代码分析

发布时间:2022-10-17 17:52:12 来源:亿速云 阅读:187 作者:iii 栏目:编程语言

本文小编为大家详细介绍“java经典算法实例代码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“java经典算法实例代码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、前言

       正值金九银十好时节,又到了刷题月。

二、题目描述:

题目1:

求s = a + aa + aaa + aaaa + aa...a的值,其中a是一个数字。例如2 + 22 + 222 + 2222 + 22222(此时共有5个数相加),几个数相加有键盘控制。

题目2:

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程找出1000以内的所有完数。

三、思路分析:

题1分析:

       找出规律,222 = 22*10+1;2222 = 222*10+2,其实就是后一个数 都在第一个数(start)上加start+10*num,其中num为上一次的叠加数。 

题2分析:

       看这题,首先要知道一件事,什么是完数,知道完数的算法规则,其实就能很清晰的计算出1000以内符合规则的数字,对吧。

      那什么是完数?完数其实就是一个数如果恰好等于它的因子之和,这个数就称为"完数"。比如6,所以所有因子[1,2,3]相加(1+2+3)就等于6.

      知道了规则,那其实就成功了百分之八十,因为我之前有讲过求一个数的所有因子。

四、算法实现:

题1AC代码:

public static int sumNums(int num, int count) {

    //记录输入的num
    int start = num;
    //记录和
    int sum = 0;
    for (int i = 1; i <= count; i++) {
        sum += num;
        //计算出下一个数字。
        num = start + num * 10;
        //丢弃最后一个“+”号
        if (i == count) {
            System.out.print(num);
        } else {
            System.out.print(num + "+");
        }
    }
    System.out.println("=" + sum);
    return sum;
}

题2AC代码:

/**
 * 计算1-1000之内的所有完数
 */
public static List<Integer> ws() {

    //统计完数
    List<Integer> list = new ArrayList<>();

    //记录一个数的因子之和
    int sum;

    //循环1-1000之内的数
    for (int i = 1; i <= 1000; i++) {

        //判断该数是否为一个完数
        sum = 0;
        for (int j = 1; j < i; j++) {
            if (i % j == 0) {
                //叠加因子之和
                sum += j;
            }
        }
        //判断是否为完数
        if (sum == i) {
            list.add(i);
        }
    }
    return list;
}

读到这里,这篇“java经典算法实例代码分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI