输入 a 和 b , 请返回 a 和 b 的最大公约数。
数据范围:
进阶:空间复杂度
,时间复杂度 )
3,6
3
8,12
4
a和b的范围是[1-109]
public int gcd (int a, int b) {
// write code here
int num=Math.min(a,b) ,temp=num ,index=1;
while(temp>1){
temp=num/index++;
if(a%temp==0 && b%temp==0){
break;
}
}
return temp;
// ---------------------------------------------------------------
if(a%b==0){
return b;
}
return gcd(b ,a%b);
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 求出a、b的最大公约数。
* @param a int
* @param b int
* @return int
*/
public int gcd (int a, int b) {
// write code here
if (b == 0) {
return a;
}
return a > b ? gcd(b, a % b) : gcd(a, b % a);
}
} if (b % a == 0) {
return a;
}
int minNum = Math.min(a, b);
for (int i = minNum; i >= 1; i--) {
if (a % i == 0 && b % i == 0) {
return i;
}
}
return 0; if(b == 0){
return a;
}
return gcd(b,a % b); int x = 0;
while (a % 2 == 0 && b % 2 == 0) {
a = a / 2;
b = b / 2;
x++;
}
if (a == b) {
if (x != 0) {
return a * (int) Math.pow(2, x);
}
return a;
}
int max = Math.max(a, b);
int min = Math.min(a, b);
if (x != 0) {
return gcd(max - min, min) * (int) Math.pow(2, x);
} else {
return gcd(max - min, min);
}
if (a==0||b==0) return a==0?a:b; if(a%b==0) return b; return gcd(b,a%b);2.更相减损法
if (a<b){
int tmp=a;
a=b;
b=tmp; }
if (a==0||b==0)return a==0?a:b;
if (a-b==0) return a;
return gcd(b,a-b); public int gcd (int a, int b) {
// write code here
if(a%b==0||b%a==0)
{
return a>b? b:a;
}
else
{ int max=0;
for(int i=1;i<=(a>b?b:a);i++)
{
if(a%i==0&&b%i==0)
{
max=i;
}
}
return max;
}
}