java 求最大公約數的幾種方式

想了解更多算法題,可以關注微信公衆號“數據結構和算法”,每天一題爲你精彩解答。

1,歐幾里得算法求最大公約數

1	public static int gcd1(int num1, int num2) {
2    	int temp = num1 % num2;
3   	 while (temp != 0) {
4      	  	num1 = num2;
5           num2 = temp;
6       	temp = num1 % num2;
7   	 }
8   	 return num2;
9	}

2,還可以從num1和num2的最小值找起,一直往下減,直到找到爲止

1	public static int gcd2(int num1, int num2) {
 2   	 int temp = Math.min(num1, num2);
 3   	 while (true) {
 4       	 if (num1 % temp == 0 && num2 % temp == 0)
 5          	  break;
 6       	 else
 7           	 temp--;
 8   	 }
 9   	 return temp;
10	}
11
12	public static int gcd2_1(int num1, int num2) {
13   	 int temp = Math.min(num1, num2);
14     	 while (num1 % temp != 0 || num2 % temp != 0) {
15       	 temp--;
16   	 }
17   	 return temp;
18	}

3,還可以輾轉相減求得

 1	public static int gcd3(int num1, int num2) {
 2   	 while (true) {
 3     	   if (num1 > num2)
 4       	     num1 -= num2;
 5       	 else if (num1 < num2)
 6            	num2 -= num1;
 7        	else
 8            	return num1;
 9    	}
10	}

4,還可以使用遞歸的方式

1	public static int gcd4(int a, int b) {
2  	  if (a % b == 0)
3     	   return b;
4   	 return gcd4(b, a % b);
5	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章