Java寻找最大公约数
利用欧几里得除法可以很容易的到的
- 循环实现
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int m = scan.nextInt();
int n = scan.nextInt();
int temp, ans;
while (true){
temp = m % n;
if(temp==0){
ans = n;
break;
}else{
m = n;
n = temp;
}
}
System.out.println(ans);
}
- 函数迭代实现
public static int factor(int m, int n)
{
int temp;
while (true){
temp = m % n;
if(temp==0){
return n;
}else{
m = n;
n = temp;
}
}
}
- 函数递归实现
public static int factor(int m, int n)
{
if(m % n == 0)
return n;
else
return factor(n,m%n);
}
或者可以一句实现
public static int factor(int m, int n)
{
return m % n == 0 ? n:factor(n,m % n);
}