【Java学习之代码学习】 Prog10_公约数和公倍数问题

来源:互联网 发布:ipad软件哪里下载 编辑:程序博客网 时间:2024/05/20 06:56

这里写图片描述
每个人都会经历这样的阶段:开始意识到自己的平庸与局限,看着很多不切实际的可能性正逐渐被关闭,与此同时又会觉得不甘心。希望与失望反复交叠,变得焦虑与迷茫。其实,自我怀疑与自我期许正是硬币的两面,打破怀疑、印证期许,恰恰是成长中最重要的环节之一。早安!

█ Java问题:

今日的每日一题也是一个算术题:输入两个正整数m和n,求其最大公约数和最小公倍数。

█ 代码贴图:

########################################################

这里写图片描述

########################################################

package test;import java.util.Scanner;/** * 每日一题: * 输入两个正整数m和n,求其最大公约数和最小公倍数。 *  * Date:11.16 * */public class Prog10最大公约最小公倍 {    public static void main(String[] args) {        while(true){            System.out.println("输入第一个数:");            int m = getInputNum();            if(m==0)break;            if(m>0){                System.out.println("输入第二个数:");                int n = getInputNum();                if(n==0)break;                if(n>0){                    // 最大公约数                    int maxCommonDivisor = maxCommonDivisor(m, n);                    // 最小公倍数:由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积                    // 所以最小公倍数=两个数的乘积除以最小公倍数                    int minCommonMultiple = m * n / maxCommonDivisor;                    System.out.println(m + "和" + n + "的最大公约数为" + maxCommonDivisor);                    System.out.println(m + "和" + n + "的最小公倍数为" + minCommonMultiple);                }            }        }    }    /**     * 仿照涛哥封装的方法,得到输入的整数,或者退出程序的指令     * @return 0:退出程序  -1:输入非法  num:输入的正整数     */    private static int getInputNum(){        Scanner in = new Scanner(System.in);        int num = -1;        if (in.hasNextInt()) {            num = in.nextInt();            if(num<=0){                num = -1;                System.err.println("输入的"+num+"为非正整数数。");            }        } else if ("exit".equals(in.next())) {            num = 0;            in.close();            System.out.println("退出成功~");        } else{            System.err.println("输入为非整数");        }        return num;    }    /**     * 求最大公约数 ,辗转相除法:     * 首先明白几个概念: 被除数÷除数=商 (15%3 的话,则15是被除数,3是除数) A除B 表示B是被除数 A是除数     * (15%3的话,表示3除15)     *      * 求法:当两个数都较大时,采用辗转相除法比较方便. 其方法是:       * 以小数除大数,如果能整除,那么小数就是所求的最大公约数 否则就用余数来除刚才的除数; 再用这新除法的余数去除刚才的余数.     * 依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数.     *      * @param m     * @param n     */    private static int maxCommonDivisor(int m, int n) {        int temp = 1;        // 确保m>n,否则交换位置,结果为:m是大数,n是小数        if (m < n) {            temp = m;            m = n;            n = temp;        }        // 以小数除大数,如果能整除,那么小数就是所求的最大公约数(m%n)        // 如果余数是0,则代表小数n是就是最大公约数。        // 如果余数不是0,则用余数除刚才的除数。(除数%余数)        // 以此类推,只到余数是0,        // 则除数就是最大公约数        while (n != 0) {            temp = m % n;            m = n; // 除数            n = temp;// 余数        }        return m;    }}

Good morning everyone! Be very careful about what you think. Your thoughts run your life. Bon courage!

PS :本篇文章内容不是自己写的,是从崔老师发出来的内容中稍微整理后的博客,顶部的贴图来自微信公众号【人民日报】,最后的一段话,是来自王老师、吴老师的心灵鸡汤!
 

█ 相关资料:

1.人民日报 微信公众号

来了!新闻早班车-人民日报 微信公众号
连接:http://mp.weixin.qq.com/s/XvQdw7WUdfHexnpxuY_HzQ

2.金老师的建议:

a、接口类:采用JavaBean+Interface+Dao的形式来定义,即,实体对象+Interface+Dao。 如:用户对象接口类: UserInterfaceDao,其中xxx为模块名称。
b、实现类:采用JavaBean+Interface+Impl+Dao的形式来定义,即,实体对象+Interface+Impl+Dao。 如:用户对象实现类:UserInterfaceImplDao。
Dao层命名规则
一般接口命名规则可以在最开始加上大写字母I,其实现类末尾加上Impl,这样可以很容易根据命名来区分是接口,还是普通类,还是实现类,前面的大写I表示Interface,后面的Impl表示Implementation

3.崔老师的建议:

大家如果想把Eclipse中的代码全部截屏的话,可以使用这个工具
这里写图片描述
整页代码截屏,这个工具可以滚动截屏。

在实际开发工作中,是一个团队一起工作,如果团队员的代码不宜读的话,难免会造成低效率的工作,不宜修改和维护。建议将代码写得更简洁去实现更复杂的算法。我们在练习的过程中也有点类似团队相互去读队友的代码,对代码进行审查,从而锻炼你们的编程思维和编程的效率。

PS :本篇文章使用的内容如果涉及到侵权问题、违反相关规则请联系我,立即删除。
  

转载请注明出处:http://blog.csdn.net/ljb568838953/article/details/53418410

0 0
原创粉丝点击