1. 程式人生 > >經典演算法之輾轉相除法(歐幾里得定理)

經典演算法之輾轉相除法(歐幾里得定理)

問題描述:

兩個數a,b,要求求得這兩個數的最大公約數和最小公倍數.

解題思路:

輾轉相除法(歐幾里得定理)思想:一個數,能整除數a和數b,那麼這個數一定可以整除(a-b),即gcd(a, b) = gcd(a, a%b);

基於演算法基本定理: 質因數分解的一致性

程式碼實現:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
 	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int a = input.nextInt();
		int b = input.nextInt();
		System.out.println(gcd(a, b));  //求a和b的最大公約數
		System.out.println(lcm(a, b));  //求a和b的最小公倍數
		
		input.close();
	}

	public static int lcm(int a, int b) {
		
		return a * b / gcd(a, b);
	}

	public static int gcd(int a, int b) {

		if (b == 0) return a;
		return gcd(b, a%b);
	}
}


編譯執行: