1.首先明确思路最大公约数也就是说两个数除以这个公约数都为0,并且是要最大的,所以建议用到循环体并且用到 --找到第一个跳出循环体即可。
2.最小公倍数两个数都去除以公约数也就是两个数与公倍数的倍数差用这个倍数差去乘最大公约数自然就是最小公倍数
3.可能会有更好的解题方法这种形式纯属个人见解(第一次创作希望手下留情)
代码:
package com; //计算 n 和 m的最大公约数和最小公倍数 import java.util.Scanner; class demo{ public static void main(String[] args){ //用Sanner函数获得从键盘输入的数据 Scanner scan=new Scanner(System.in); //获取第一个数 System.out.print("请输入第一个数:"); int s1=scan.nextInt(); //获取第二个数 System.out.print("请输入第二个数:"); int s2=scan.nextInt(); //判断s1和s2谁是更大的值并将大的那个数定义为max,小的那个数定义为min int max,min; if(s1>s2){ max=s1; min=s2; }else{ min=s1; max=s2; } //排除存在除数为0的情况 if(s1 == 0 || s2 == 0){ System.out.println("存在数字为0不存在最大公约数"); }else{ for(int i =max;i>=1;i--){ if(max % i == 0 && min % i == 0 ){ System.out.println("最大公约数为:"+i); System.out.println("最小公倍数为:"+(max*min/i)); break; } } } } }
运行结果: