学习记录——java GCD

题目

输入两个正整数 m 和 n,求其最大公约数(Greatest Common Divisor)和最小公倍数

首先,
最大公约数(Greatest Common Divisor)指两个或多个整数共有约数中最大的一个
最小公倍数(Least Common Multiple):两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数

方法一 辗转相除法

以下

public class GCD {

	static int gcd(int a,int b) {    //辗除
		
		while(b>0) {	
			 a = a%b+b;    //交换a,b值
			 b =a-b;
			 a =a-b;
		}
		return a;        //当a%b=0时输出最后的除数,被交换给了a
		
	}
	public static void main(String[] args) {
		int m=756,n=4400;
		int i = gcd(m,n);
		System.out.println(m+"and"+n+"的最大公约数"+i);
		int x =m/i;
		int y =n/i;
		System.out.println(m+"and"+n+"的最小公 倍数为"+x*y*i); //利用了最大公约数和最小公倍数之间的关系
	}
}

结果:
结果

后续需要补充的:其他方法、多个整数求最大公约数和最小公倍数

5.23更新~

寻找gcd的其他方法

来自:programiz

  1. 从1开始寻找两个整数都可整除的数,这个方法可以用于多个整数求gcd(吧)
  2. 辗转相减
		
		int n1=81, n2=153, gcd=1;
		// Method1 
        for(int i =1; i<=n1 && i<=n2;i++){
            if(n1%i==0 && n2%i==0){
                gcd=i;
            }
        }
        System.out.println("first method="+gcd);
        // Method2
        while(n1!=n2){
            if(n1>n2){
                n1 -= n2;
            }else{
                n2 -= n1;
            }
        }
        System.out.println("second method="+n1);
    

结果
在这里插入图片描述

你可能感兴趣的:(学习记录——java GCD)