public static int big(int num1,int num2){
int big = 0
int small = 0
if(num1>num2){
big = num1
small = num2
}else{
big = num2
small = num1
}
if(small==0){
System.out.println("除数不能为0")
return 0
}
while(true){
if(small==0){
return big
}else{
int temp = big
big = small
small = temp%small
}
}
}
public class Gcd {public static void main(String[] args) {
for(int i=0i<10i++) {
int a=(int)(Math.random()*99+1)
int b=(int)(Math.random()*99+1)
System.out.println(a+","+b+"\t=>\t"+getNumber(a,b))
}
}
public static int getNumber(int m,int n){
if (m % n == 0) {
return n
}
else {
return getNumber(n,m % n)
}
}
}
1.从1开始循环。分别求出m、n的约数。找出最大公约数。2.判断m、n的大小,从较小的开始循环,每次减一,判断是否为公约数。如果是,则为最大公约数,break;
3.2反过来,从小到大循环,找最大的。
公约数判断:
m%i=0&&n/i=0。
举第二个例子:
public
class
Test
{
public
static
int
getN(int
m,int
n){
int
i
=
m>n?n:m
for(i>0i--){
if(m%i==0&&n%i==0){
System.out.println("m、n的最大公约数为"+i)
break
}
}
return
i
}
public
static
void
main(String[]
args)
{
System.out.println(getN(100,
88))
}
}