經典演算法之輾轉相除法(歐幾里得定理)
阿新 • • 發佈:2019-01-25
問題描述:
兩個數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); } }