/* 最大公约数:如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数,b 为 a 的约数。几个自然数私有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。最小公倍数:
两数相乘再除以最大公约数,即为最小公倍数
*/package ch00;
import org.w3c.dom.ls.LSOutput;
import java.util.Scanner;
public class FindMaximumNumberOfConventions {
// 从高向低遍历,寻求最大非法项
public static int Solution1(int n,int m){for(int i=m; i>0; i--)
if(n%i==0 && m%i==0){return i;}
return 0;
}
// 碾转相除法
public static int Solution2(int n,int m){
int i;
while(m>0){
i = n%m;
n = m;
m = i;
}
return n;
}
// 更相减损法
public static int Solution3(int n,int m){while(n!=m){if(n>m)
n-=m;
else m-=n;
}
return n;
}
public static void main(String[] args) {Scanner sc=new Scanner(System.in);
System.out.println("请输出数 n:");
int n=sc.nextInt();
System.out.println("请输出数 m:");
int m=sc.nextInt();
int temp;
if(n<m){
temp=n;
n=m;
m=temp;
}
System.out.println("最大公约数:");
System.out.println("Solution1:"+Solution1(n,m));
System.out.println("Solution2:"+Solution2(n,m));
System.out.println("Solution3:"+Solution3(n,m));
System.out.println("最小公倍数:"+n*m/Solution1(n,m));
}
}