用三种方法求两个数的最大公因数和最小公倍数,求三个数的最大公因数和最小公倍数

该程序的代码为:

package A; 
 import java.util.Arrays; 
 import java.util.Scanner; 
 public class common { 
 public static void main(String[] args) { 
 Scanner in = new Scanner(System.in); 
 //选择菜单 
 System.out.println(“————————————————————————”); 
 System.out.println(“1.求两个数的最大公因数和最小公倍数”); 
 System.out.println(“2.求三个数的最大公因数和最小公倍数”); 
 System.out.println(“————————————————————————”); 
 System.out.println(“请输入:”); 
 int d=in.nextInt();//输入选择的数字 
 if(d==1){ 
 System.out.println(“求两个数的最大公约数和最小公倍数:”);//求两个数的最大公约数和最小公倍数 
 System.out.print(“请输入两个数 :”); 
 int x = in.nextInt(); 
 int y = in.nextInt(); 
 int z = Method(x,y); 
 System.out.println(“辗转相除法:”);//第一种方法 
 System.out.println(“最大公因数 : “+z); 
 System.out.println(“最小公倍数 : “+(x*y/z)); 
 System.out.println(“相减法:”);//第二种方法 
 z = Subtraction(x,y); 
 System.out.println(“最大公因数 : “+z); 
 System.out.println(“最小公倍数 : “+(x*y/z)); 
 System.out.println(“穷举法:”);//第三种方法 
 z = divisor(x,y); 
 System.out.println(“最大公因数 : “+divisor(x,y)); 
 z=multiple(x,y); 
 System.out.println(“最小公倍数 : “+multiple(x,y)); 
 } 
 else if(d==2){ 
 System.out.println(“求三个数的最小公倍数和最大公约数:”);//求三个数的最大公约数和最小公倍数 
 System.out.print(“请输入三个数:”); 
 int a = in.nextInt(); 
 int b =in.nextInt(); 
 int c =in.nextInt(); 
 System.out.println(“最大公因数为:”); 
 System.out.println(getmin(a,b,c)); 
 System.out.println(“最小公倍数为:”); 
 System.out.println(lcd(a,b,c)); 
 } 
 else 
 System.out.println(“请重新输入数字”); 
 } 
 //辗转相除法 
 public static int Method(int x,int y){ 
 int a,b,c; 
 a=x; 
 b=y; 
 while(b!=0){ 
 c=a%b; 
 a=b; 
 b=c; 
 } 
 return a; 
 } 
 //相减法 
 public static int Subtraction(int x,int y){ 
 while(x!=y){ 
 if(x>y){ 
 x=x-y; 
 } 
 else{ 
 y=y-x; 
 } 
 } 
 return x; 
 } 
 //穷举法 
 public static int divisor(int x,int y){ 
 int z; 
 for(z=x;z>0;z–){ 
 if(x%z==0&&y%z==0){ 
 break; 
 } 
 } 
 return z; 
 } 
 public static int multiple(int x,int y){ 
 int z; 
 for(z=x;;z++){ 
 if(z%x==0&&z%y==0){ 
 break; 
 } 
 } 
 return z; 
 } 
 //三个数 
 public static int lcd(int a,int b,int c){ //求最小公倍数 
 int max=getMax(a,b,c); 
 for(int i=max; ;i++){ 
 if(i%a==0&&i%b==0&&i%c==0){ 
 return i; 
 } 
 } 
 }private static int getMax(int a, int b, int c) {   //求三个数中的最大值
     int []xx={a,b,c};
     Arrays.sort(xx);  //排序
     return xx[2];   //返回最大值} 
 public static int getmin(int a,int b,int c){ 
 int z; 
 for(z=a;z>0;z–){ 
 if(a%z==0&&b%z==0&&c%z==0){ 
 break; 
 } 
 } 
 return z; 
 } 
 }

java求最大公因子 java最大公因数怎么求_最小公倍数


程序的运行结果:

java求最大公因子 java最大公因数怎么求_最大公因数_02

图一
图一为在选择时求两个数还是三个数的最大公因数和最小公倍数时输入的数字不在本题有效的范围内

java求最大公因子 java最大公因数怎么求_最大公因数_03

图二

图二为求两个数的最小公倍数和最大公因数的三种方法

java求最大公因子 java最大公因数怎么求_最小公倍数_04


图三

图三为求三个数的最小公倍数和最大公因数

java求最大公因子 java最大公因数怎么求_最大公因数_05


图四

java求最大公因子 java最大公因数怎么求_最大公因数_06

图五
图四,图五为程序的调试
总结:本次作业为用三种方法的求两个数的最小公倍数和最大公因数以及求三个数的最大公倍数和最小公因数,做此题时,应把基本的最大公因数和最小公被数的基础定义弄清楚,不同的算法也要搞清楚其本质,这样在写代码时思路不会乱,可以在自己的期望下实现。但是在很多方面还是要注意,对于Java的运用很多方面还是不熟练,程序还是用了最基本的方法在编程,很多方面还是不够简便,通俗易懂。在java的调试时,根据百度的方法调试,而且在一些地方看不懂。希望在以后的学习生活中,对于一种语言的学习可以更深入,而不是简单的学个表面,并且要多练习,才能发现自己学习上的漏洞,业成于勤,荒于嬉,行成于思,毁于随。