演算法設計與分析-01歐幾里得

qq_44753011發表於2020-10-03

歐幾里得GCD演算法

GCD:Greatest Common Divisor 最大公約數問題

演算法的虛擬碼表示

◼初始條件:
◼給定整數? ≥ ?,? ≥ ?,且?,?不同時為0;
◼ 目標:求?,?的最大公約數。
◼ 方法:
1. 輸入?,?
2. while ? ≠ ?
3. r = a MOD b
4. a = b
5. b = r
6. 轉2 7. 輸出結果:a

演算法的手算表格

求1035與759的最大公約數
在這裡插入圖片描述

演算法的java程式碼表示

package e;
import java.util.*;
public class GCD {
	static Scanner input = new Scanner(System.in);
	public static void main(String[] args) {
		// TODO 自動生成的方法存根
		System.out.println("請輸入第一個數字a:");
		int a = input.nextInt();
		System.out.println("請輸入第二個數字b:");
		int b = input.nextInt();
		EuclidGCD(a, b);
	}
	public static void EuclidGCD(int a,int b){
		int r = 0;
		int q = 0;
		System.out.println("a  b  r  q");
		while(b != 0) {			
			r = a % b;
			q = a / b;
			System.out.println(" "+a+" "+b+" "+r+" "+q);
			a = b;
			b = r;			
		}
		System.out.println(" "+a+" "+b);
	}
	
}

java程式碼執行結果

在這裡插入圖片描述

相關文章