package java算法; /* * 输入两个数,求其最大公约数和最小公倍数 * */ import java.util.Scanner; public class comonDivisor { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); int first=a; int second=b; System.out.println("a="+a+" "+"b="+b); int temp; if(a<b){ temp=a; a=b; b=temp; } while(b!=0){ //用辗转相除法求两个数的最大公约数 temp=a%b; a=b; b=temp; } System.out.println("最大公约数为:"+a); System.out.println("最小公倍数:"+first*second/a); } }
一.辗转相除法
例1 。求两个正数8251和6105的最大公因数。
(分析:辗转相除→余数为零→得到结果)
解:8251=6105×1+2146
显然8251与6105的最大公因数也必是2146的因数,同样6105与2146的公因数也必是8251的因数,所以8251与6105的最大公因数也是6105与2146的最大公因数。
6105=2146×2+1813
2146=1813×1+333
1813=333×5+148
333=148×2+37
148=37×4+0
则37为8251与6105的最大公因数。