• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
JumperMan

对不起,我是一个程序员.

博客园    首页    新随笔    联系   管理    订阅  订阅
求最大公约数和最大公倍数(Java算法)

最大公约数(最大公因数):指某几个整数共有约数中最大的一个。

求两个整数最大公约数主要的方法:

  • 列举法:各自列出约数,再找出最大的公约数。
  • 素因数分解法:两数各作素因数分解,然后取出共有的项乘起来。
  • 短除法
  • 辗转相除法(扩展版):常使用于直观上不容易判别公约数的场合。

Java程式代码:

以下使用辗转相除法实现。

1 private int GCD(int a, int b) {
2         if(b==0) return a; 
3     return a % b == 0 ? b : GCD(b, a % b);
4 }

 


 

     最小公倍数,是数论中的一个概念。若有一个数X,可以被另外两个数A、B整除,且X大于(或等于)A和B,则X为A和B的公倍数。A和B的公倍数有无限个,而所有的公倍数中,最小的公倍数就叫做最小公倍数。

  Java程式代码:

以下使用辗转相除法求得最大公因数,之后再求最小公倍数。

1 private int GCD(int a, int b) {
2     return a % b == 0 ? b : GCD(b, a % b);
3 }
4 private int LCM(int a, int b) { 
5     return a * b / GCD(a, b);
6 }

附:辗转相除法基于如下原理,两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。

 

参考资料:

1.最大公约数.https://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E5%85%AC%E5%9B%A0%E6%95%B8

2.辗转相除法.https://zh.wikipedia.org/wiki/%E8%BC%BE%E8%BD%89%E7%9B%B8%E9%99%A4%E6%B3%95

3.最小公倍数.https://zh.wikipedia.org/wiki/%E6%9C%80%E5%B0%8F%E5%85%AC%E5%80%8D%E6%95%B8

 

posted on 2017-03-12 10:35  JumperMan  阅读(6155)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3