java中计算最大公约数的两种方法

第一种:枚举法

这种方法需要计算机将每一个数都去试一遍才能找到最后的值

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        int s=1;
        int i;
        for(i=2;i<=a&&i<=b;i++)
        {
        if(a%i==0&&b%i==0)
        {
        s=i;
        }
        }
        System.out.println(a+"与"+b+"的最大公约数是"+s);
}

}

第二种:辗转相除法
public class Main {


public static void main(String[] args) {
// TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();
        int oa=a;
        int ob=b;
        while(b!=0)
        {
        int r=a%b;
        a=b;
        b=r;
        }
        System.out.println(oa+"与"+ob+"的最大公约数是"+a);//在while过程中,a与b的值会发生改变,所以需要将a,b的值赋                                                                                                   给oa,ob
}
}

你可能感兴趣的:(java中计算最大公约数的两种方法)