求俩数的最大公约数(一):
package test01; import java.util.Scanner; /* * 求a和b的最大公约数 */ public class Gongyue { public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.println("请依次输入a和b:"); int a = in.nextInt(); int b =in.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(a+"和"+b+"的最大公约数为:"+gcd); } }
效果如下图所示:
求俩数的最大公约数(二)
package test01; import java.util.Scanner; /* * 用辗转相除法计算俩数的最大公约数 */ public class Gongyue02 { public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.println("请输入a和b:"); int a = in.nextInt(); int b = in.nextInt(); int oa = a; int ob = b; while(b!=0) { int r = a%b; System.out.println(a+","+b+","+r); a=b; b=r; } System.out.println(oa+"和"+ob+"的最大公约数是:"+a); } }
效果如下图所示:
接着最大公约数,我们再来求最小公倍数:
package test01; /* * 算俩个数的最小公倍数=俩数乘积除以最大公约数 */ import java.util.Scanner; public class Gongbei { public static void main(String[] args){ Scanner in = new Scanner(System.in); System.out.println("请依次输入a和b:"); int a = in.nextInt(); int b = in.nextInt(); int gcd = 1; int cj; int gbs; for(int i=2;i<=a&&i<=b;i++) { if(a%i==0&&b%i==0) { gcd = i; } } cj = a*b; gbs = cj / gcd; System.out.println(a+"和"+b+"的最小公倍数为:"+gbs); } }
效果如下图所示: