主题:最大公约数(也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个)
问题1:求两个正整数的最大公约数
思路1:辗转相除法
例:18 12的最大公约数
18/12余6,再用12/6余0,第一次中a=18 b=12;第二次中a=12 b=6。c=a%b,用于存储每一次d的余数。
代码:
public static int func(int a,int b){
int c=a%b;
while(c!=0){
a=b;
b=c;
c=a%b;
}
return b;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int n2=sc.nextInt();
System.out.println(func(n,n2));
}
思路2:逆向思考
public static void main(String[] args) {
System.out.println("请输入两个正整数");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int i;
if (a < b) {
for (i = a; i > 0; i--) {
if (a % i == 0 && b % i == 0) {
System.out.println(i);
break;
}
}
} else if (b < a) {
for (i = b; i > 0; i--) {
if (a % i == 0 && b % i == 0) {
System.out.println(i);
break;
}
}
}
else {
System.out.println(a);
}
}