求最大公约数,两种方法:枚举法、辗转相除法。
例如:
输入两个整数:12 18
输出最大公约数:6
枚举法:Java实现
import java.util.Scanner;
public class Test01{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int gcd = 1;
for(int i=2; i<=a&&i<=b; i++)
{
if(a%i==0 && b%i==0)
gcd = i;
}
System.out.println(gcd);
}
}
辗转相除法:Java实现
import java.util.Scanner;
public class Test02{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int temp;
while(b != 0)
{
temp = a%b;
a = b;
b = temp;
}
System.out.println(a);
}
}
对于辗转相除法:
a (=b) | b (=temp) | temp (=a%b) |
12 | 18 | 12 |
18 | 12 | 6 |
12 | 6 | 0 |
6 | 0 |
如果b=0,则a为最大公约数;
否则,计算a除b的余数,让a=b,b=余数,直至计算到b=0,输出a。