一、从2开始一直到两个数中最大的一个进行取余运算
代码:
package com.im;
import java.util.Scanner;
public class Demo59 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.print("输入第一位数:");
int n1 = input.nextInt();
System.out.print("输入第二位数:");
int n2 = input.nextInt();
int g = 1; //公约数
int k = 2; //初始的公约数
while(k<=n1 && k<=n2){ //判断公约数于这两位数
if(n1%k==0 && n2%k==0){ //判断公约数能被这两位数整除
g = k;
}
k++;
}
System.out.println(n1+"和"+n2+"的最大公约数为:"+g);
}
}
二、使用辗转相除法
解析:两个数125和2525求最大公约数
5767/4453=1余1314
4453/1314 =3余511
1314/511=2余292
511/292=1余219
292/73=3余0 被整除,所以73为最大公约数
代码:
package com.im;
import java.util.Scanner;
public class Demo591 {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("输入第一位数:");
int m = input.nextInt();
System.out.print("输入第二位数:");
int n = input.nextInt();
if(m>n){
while(m%n!=0){
int g = m%n; //公约数
m = n;
n = g;
}
System.out.println("最大公约数为:"+n);
}else{
while(n%m!=0){
int g = n%m; //公约数
n = m;
m = g;
}
System.out.println("最大公约数为:"+m);
}
}
}