Android成长日记——不定期更新的小程序

    xiaoxiao2021-12-14  16

    更新时间又太晚了,拖的时间太长了。下次注意,争取每天一更。 今天的主题是算法,以后一个月的时间都是关于算法的了。

    问题1:求两个从键盘输入的数的最大公约数和最小公倍数

    顺序理解

    (1)先求最大公约数 (2)再求最小公倍数

    最大公约数

    辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法 代码: while(max%min!=0){ //一个while循环 int temp=max%min; //先拿最大数除以最小数 max=min; //得到余数以后,一直拿被除数和余数相除 min=temp; } return min; //知道余数为0 例:gcd(39,23) 39/23=1(余16) 23/16=1(余716/7=2(余27/2=3(余12/1=2(余0//到这里就停止了

    最小公倍数

    得到最大公约数之后,求最小公倍数很简单 lcm=(a/gcd)*(b/gcd)*gcd 拿其中一个数除以最大公约数,再乘以另一个数

    代码 新建一个最大公约数类

    class CalcGCD{ public static int calcGCG(int a,int b){ //使用辗转相除法计算最大公约数 int max=0; int min=0; if(a>b){ max=a; min=b; }else{ max=b; min=a; } while(max%min!=0){ int temp=max%min; max=min; min=temp; } return min; } }

    再新建一个最小公倍数的类

    class CalcLCM{ public static int calcLCM(int a,int b){ int gcd=CalcGCD.calcGCG(a,b); int lcm=(a/gcd)*(b/gcd)*gcd; return lcm; } }

    主函数和主类

    import java.util.Scanner; public class Study_20161202002{ public static void main(String[] args){ System.out.println("请输入第一个整数: "); Scanner sc=new Scanner(System.in); int a=sc.nextInt(); System.out.println("请输入第二个整数: "); int b=sc.nextInt(); System.out.println(a+"和"+b+"的最大公约数为: "); System.out.println(CalcGCD.calcGCG(a, b)); System.out.println(a+"和"+b+"的最小公倍数为: "); System.out.println(CalcLCM.calcLCM(a, b)); } }

    问题2:关于多重if语句的判断

    原理图

    语法

    if(条件1){ if(条件2){ 代码块1; }else{ 代码块2; } }else{ 代码块3; }

    逻辑理解

    如果外层if成立,则继续经过内层if 如果内层if成立,经过继续往下层if 一直成立,则顺序往下 且不管else 如果外层if不成立,则下面所有if不成立 直接到第一个else

    代码

    public class Study_20161202004 { public static void main(String[] args){ int num; Scanner sc=new Scanner(System.in); System.out.println("请输入一个数: "); num=sc.nextInt(); if(num%3==0){ System.out.println("number id divisible by 3"); if(num%2==0){ System.out.println("number is divisible by 2"); } } else{ if(num%5==0){ System.out.println("number is divisible by 5"); } } } }

    输出结果

    请输入一个数: 60 number id divisible by 3 number is divisible by 2
    转载请注明原文地址: https://ju.6miu.com/read-963975.html

    最新回复(0)