Java求最大公約數(含自帶gcd()方法)

Java求最大公約數


利用BigInteger裏的a.gcd(b)方法求a和b的最大公約數

	Scanner scanner = new Scanner(System.in);
	BigInteger x = scanner.nextBigInteger();//可以接收int類型
	BigInteger y = scanner.nextBigInteger();//也可以利用BigInteger.valueOf()將其他類型轉換爲BigInteger類型
	
	BigInteger gcd = x.gcd(y);	//BigInteger自帶的求最大公約數的方法

	//BigInteger.valueOf()使用演示
	int a = 10;
	BigInteger b = BigInteger.valueOf(a);	

取兩個數中最小,循環遞減,都滿足整除則爲最大公倍數

自定義方法(多個數同樣適用)

	public static int gcd (int a,int b) {
		int min = a<b?a:b;
		int gcd = 1;
	    for (int i = min;i >= 1;i --) {
	        if (a%i == 0 && b%i == 0) {
	            gcd = i;
	            break;
	        }
	    }
	    return gcd;
	}

輾轉相除法遞歸實現

	public static int gcd (int a,int b) {
        if(b==0)
            return a;
        else
            return gcd(b,a%b);
	}

輾轉相除法while循環實現

	public static int gcd (int a,int b) {
        int c;
        while (b!=0) {
        	c = a%b;
        	a = b;
        	b = c;
		}
        return a;
	}

更相減損術遞歸實現

	public static int gcd (int a,int b) {
        if (a==b) {
			return a;
		} else if (a>b) {
			a = a-b;
		} else {
			b = b-a;
		}
        return gcd(a, b);
        
	}

更相減損術while循環實現

	public static int gcd (int a,int b) {
        while (a!=b) {
        	if (a>b) {
				a = a-b;
			} else {
				b = b-a;
			}
		}
        return a;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章