java经典算法-day3

举报
喵手 发表于 2024/09/30 22:37:17 2024/09/30
【摘要】 哈喽,各位小伙伴们好,我是喵手。一、前言       正值金三银四好时节,又到了刷题月。xdm,有空的欢迎一起呀。无论你是挤公交还是坐地铁时间,随时随地皆可刷...你可以不用实操,你只需要看题思考,完后有空coding就好呀。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。二、题目描述:题目1:    判断101-200之间有多少个素数,并输出所有素数。题目2:    打印出100...


哈喽,各位小伙伴们好,我是喵手。

一、前言

       正值金三银四好时节,又到了刷题月。xdm,有空的欢迎一起呀。无论你是挤公交还是坐地铁时间,随时随地皆可刷...你可以不用实操,你只需要看题思考,完后有空coding就好呀。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。

二、题目描述:

题目1:

    判断101-200之间有多少个素数,并输出所有素数。

题目2:

    打印出100-400之间所有的水仙花数 ,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 水仙花数 ,因为153=1的三次方+5的三次方+3的三次方。

三、思路分析:

题1、 判断101-200之间有多少个素数,并输出所有素数。

       这题的话,与上一题相比,其实就简单些了,你只需要知道什么是素数就能解题了。

素数:素数即是质数,要求满足在大于1的自然数中,除了1和它本身以外不再有其他因数。

所以很简单吧,因为前几期有讲解过求质数的,对吧,所以直接直奔主题吧。

题2、打印出100-400之间所有的水仙花数

      这一题与第二题差不多,都是求某种数,重点就是要知道水仙花数的符合规则,只要知道这个要求,算法实现就简单了。

水仙花数:是指一个三位数,其各位数字立方和等于该数本身。例如:153就是一个水仙花数 ,因为153=1的三次方+5的三次方+3的三次方。

所以,最暴力的解决思路就是,分别取三个数字进行立方再相加,看看是否会等于原值本身。

四、算法实现:

题1AC代码:

1、定义一个判断是否为质数的方法

/**
 * 判断是否是质数
 */
public static boolean isZS(int num) {

    //排除1不是质数
    if (num == 1) {
        return false;
    }
    for (int i = 2; i < num - 1; i++) {
        //进行求余;只要余数为0,说明i被整除,该i就是num的一个因子。
        if (num % i == 0) {
            return false;
        }
    }
    return true;
}

2、写一个循环结构,从101-200的范围。

/**
 * 101-200范围内
 */
public static String printZS() {
    //用于统计质数
    String zs = "";
    //循环101-200
    for (int i = 101; i <= 200; i++) {
        //true表示是质数
        if (isZS(i)) {
            zs += "," + i;
            continue;
        }
    }
    return zs;
}

题2AC代码:

1、先实现一个判断是否为水仙花数的方法。

/**
 * 判断是否是水仙花数
 */
public static boolean isSXHS(int num) {

    //取个位数
    int x = num % 100 % 10;
    //取十位数
    int y = num / 10 % 10;
    //取百位数
    int z = num / 100;
    //进行判断
    if (num == (lf(x) + lf(y) + lf(z))) {
        System.out.println(num + "=" + z + "的三次方+" + y + "的三次方+" + x + "的三次方"); 
       return true;
    }
    return false;
}

/**
 * 手动实现一个求立方的方法
 */
public static int lf(int num) {
    return num * num * num;
}

2、控制循环范围,依次进行数字判断。

/**
 * 100-400范围内
 */
public static String printSXHS() {

    //用于统计水仙花数
    String sxhs = "";
    //循环100-400
    for (int i = 100; i <= 400; i++) {
        //true表示是水仙花数
        if (isSXHS(i)) {
            sxhs += "," + i;
            continue;
        }
    }
    return sxhs;
}

五、总结:

       综上,这两道题稍微还是偏向数学题,运用数学思维进行coding即可,基本思路我再上方已经进行了详细介绍。

       如果你有更好的解题思路或者想法,欢迎评论区留言告诉我哦,喵手感激不尽。

六、文末:

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

... ...
学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

---------------------------------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

---------------------------------------------------------------------

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。