A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© major2015 中级黑马   /  2015-4-13 17:06  /  409 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. * 求最大公约数和最小公倍数
  3. *
  4. * 概念
  5. *
  6. * 最大公约数就是几个数公有的因数中最大的一个
  7. * 假如整数n除以m,结果是无余数的整数,那么我们称m就是n的因数。
  8. * 最小公倍数就是几个数公有的倍数中最小的一个。
  9. * 整数m能够被整数n整除,整数m就是整数n的倍数。
  10. */

  11. public class Demo2 {

  12.         public static void main(String[] args) {

  13.                 int m = 9;
  14.                 int n = 4;
  15.                 System.out.println(最大公约数(m, n));// 调用maxCommonDivisor()方法
  16.                 System.out.println(最小公倍数(m, n));// 调用minCommonMultiple()方法
  17.         }

  18.         // 循环法求最大公约数
  19.         public static int 最大公约数(int m, int n) {
  20.                 // 保证m为较大数,n为较小数。若m<n,则进行数据交换
  21.                 if (m < n) {
  22.                         int temp = m;
  23.                         m = n;
  24.                         n = temp;
  25.                 }
  26.                 // 1.若m除以n余数为0,则最大公约数即为较小数n,返回n
  27.                 // 2.否则,通过交换,将较大数(1中较小数)除以较小数(1中余数),若余数为0,则最大公约数即为较小数,返回n
  28.                 // 3.否则,通过交换,将较大数(2中较小数)除以较小数(2中余数),。。。。
  29.                 // 4.直到找到较大数能除尽较小数的时候(顶点为整数1),最大公约数即为那时候的较小数。
  30.                 while (m % n != 0) {
  31.                         int temp = m % n;
  32.                         m = n;
  33.                         n = temp;
  34.                 }
  35.                 // 返回最大公约数
  36.                 return n;
  37.         }

  38.         // 求最小公倍数等于两个数中的任一数除以最大公约数,再乘上两个数中另外一个数。
  39.         public static int 最小公倍数(int m, int n) {
  40.                 return m * n / 最大公约数(m, n);
  41.         }
  42. }
复制代码


  1. //1.程序分析:利用辗除法。

  2. public class Demo2 {
  3.         // 下面的方法是求出最大公约数
  4.         public static int gcd(int m, int n) {
  5.                 while (true) {
  6.                         // 返回最小公约数
  7.                         if ((m = m % n) == 0)
  8.                                 return n;
  9.                         if ((n = n % m) == 0)
  10.                                 return m;
  11.                 }
  12.         }

  13.         public static void main(String args[]) throws Exception {
  14.                 // 取得输入值
  15.                 // Scanner chin = new Scanner(System.in);
  16.                 // int a = chin.nextInt(), b = chin.nextInt();
  17.                 // 例如求a=23,b=32的最小公倍数和最大公约数
  18.                 int a = 23;
  19.                 int b = 32;
  20.                 // 由于main函数是静态的,所以这里的gca也必须是静态的。
  21.                 int c = gcd(a, b);
  22.                 System.out.println("最小公倍数:" + a * b / c + "\n最大公约数:" + c);
  23.         }
  24. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马