- /*
- 辗转相除法(源于离散数学)
- m n r //m,n两个整数,r为余数
- 64=1*36+28
- 36=1*28+8
- 28=3*8+4
- 8=2*4+0
- 4为所求最大公约数
- 64*36/4=576 最小公倍数
- */
- import java.util.Scanner;
- class GCD_LCM{
- /*最大公约数*/
- public static int gcd(int m,int n){//m,n代表两个整数
- int r=0;//r代表余数
- while((r=m%n)!=0){
- m=n;
- n=r;
- }
- return n;
- }
- /*最小公倍数*/
- public static int lcm(int m,int n){
-
- return m/gcd(m,n)*n;//两数之积除以最大公约数=最小公倍数
- }
- public static void main(String[] args){
- Scanner scan=new Scanner(System.in);
- int m=scan.nextInt();
- int n=scan.nextInt();
- System.out.println(m+"和"+n+"的最大公约数: "+gcd(m,n)+"\n"+
- m+"和"+n+"的最小公倍数: "+lcm(m,n));
-
- }
- }
复制代码 |