用多种方法求最大公倍数和最小公因数的java代码

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

该程序的代码为:
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的调试时,根据百度的方法调试,而且在一些地方看不懂。希望在以后的学习生活中,对于一种语言的学习可以更深入,而不是简单的学个表面,并且要多练习,才能发现自己学习上的漏洞,业成于勤,荒于嬉,行成于思,毁于随。

猜你喜欢

转载自blog.csdn.net/qq_43108598/article/details/82502221