(递归)求最大公约数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44593822/article/details/102728866

能不用Math库里的函数就不用,速度太慢了,运行超时!!!

使用辗转相除法和递归求两个正整数m和n的最大公约数。

输入格式:

输入两个正整数m,n。

输出格式:

按要求输出辗转相除过程及最终结果,输出结果之间空格分隔。

输入样例:

21 35

输出样例:

gcd(21,35) gcd(35,21) gcd(21,14) gcd(14,7) 7

代码如下:

import java.util.*;
//能不用Math库里的函数就不用,速度太慢了,运行容易超时!!!
public class 递归求最大公约数 {
	static int max,min;
	static int max(int x,int y){
		if(x>=y){
			return x;
		}
		else{
			return y;
		}
	}
	static int min(int x,int y){
		if(x<=y){
			return x;
		}
		else{
			return y;
		}
	}
	static void fun(int m,int n){
		if(m<n){//为了输出第一个gcd(21,35)才加的。。
			System.out.print("gcd("+m+","+n+") ");
		}
		if(n==0){
			System.out.println(m);
			return;
		}
		max=max(m, n);
		min=min(m, n);
		System.out.print("gcd("+max+","+min+") ");
		max=max%min;
		fun(min,max);
	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
        Scanner in=new Scanner(System.in);
        int m=in.nextInt();
        int n=in.nextInt();
        fun(m,n);
	}

}

猜你喜欢

转载自blog.csdn.net/weixin_44593822/article/details/102728866