Java 求两个整数中的最大公约数

辗转相除法(欧几里得算法)点击打开链接    

    对要求最大公因数的两个数a、b;

    设b

    若r1=0,则(a,b)=b;若r1≠0,则再用r1除b,得b=r1q+r2 (0≤r2

    若r2=0,则(a,b)=r1,若r2≠0,则继续用r2除r1……如此循环,直到能整除为止。其最后一个非零余数即为(a,b)。

   结论: 设两数为a、b(b

package com.itheima.basic;

import java.util.Scanner;//导入包

public class Test {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);//创建对象
		System.out.println("请输入第一个整数");
		int m = sc.nextInt();//接受第一个数据
		System.out.println("请输入第二个整数");
		int n = sc.nextInt();//接受第二个数据
		int c = gcd(m, n);//调用方法,并返回最大公约数
		System.out.println(m+"和"+n+"的最大公约数为:"+c);
	}

	public static int gcd(int m, int n) {
		if (n == 0) {
			return m;
		}
		int r = m % n;
		return gcd(n, r);
	}

}

你可能感兴趣的:(算法,Java)