这里有两种方法,第一种是枚举。
package practice;
import java.util.Scanner;
public class practice {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int gcd = 0;
for(int i = 2; i<=a && i<=b; i++) //中间的条件必须是a与b来共同构成
{
if(a % i == 0 && b % i == 0) //利用取余来判断
{
gcd = i;
}
}
System.out.println(a+"和"+b+"的最大公约数是"+gcd);
}
}
第二种是辗转相除法。
package practice;
import java.util.Scanner;
public class practice {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int r;
while( b != 0)
{
r = a % b;
a = b;
b = r;
}
System.out.println(a+"和"+b+"的最大公约数是"+a);
}
}
输入:12 18 余数为r
a b r
12 18 12
18 12 6
12 6 0
6 0 0