怎么用Java求最大公约数
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"怎么用Java求最大公约数",在日常操作中,相信很多人在怎么用Java求最大公约数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么用Java求最大公
千家信息网最后更新 2026年11月03日怎么用Java求最大公约数
这篇文章主要介绍"怎么用Java求最大公约数",在日常操作中,相信很多人在怎么用Java求最大公约数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么用Java求最大公约数"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
/** * @date 2019/7/25 11:33 * description:求最大公约数 */public class CommonDivisor { /** * 第一版本 * 最简单的想法,找较小数的一半,从大到小,开始试着找出能够同时两个数整除最大数 * 这种方法暴力枚举,会循环很多次 * * @param a * @param b * @return */ public static int getGreatestCommonDivisor(int a, int b) { int big = a > b ? a : b; int small = a < b ? a : b; if (big % small == 0) { return small; } for (int i = small / 2; i > 1; i--) { if (small % i == 0 && big % i == 0) { return i; } } return 1; } /** * 第二版本 * 欧几里得算法:辗转相除法求最大公约数 * 两个正数a和b(a>b),它们的最大公约数等于a和b相除的余数c和b的最大公约数 我们可以使用递归的方法简化问题 * eg 10和25 的最大公约数等于 余数5和10的最大公约数 5 * 缺点 : 两个数较大时 a%b的转换效率低 * * @param a * @param b * @return */ public static int getGreatestCommonDivisor2(int a, int b) { int big = a > b ? a : b; int small = a < b ? a : b; if (big % small == 0) { return small; } return getGreatestCommonDivisor2(big % small, small); } /** * 第三版本 * 九章算术 * 更相减损术 :两个正整数a,b(a>b),他们的最大公约数等于a-b的差值c和较小数b的最大公约数 * 缺点:两数相差很大时,递归次数太大 * * @param a * @param b * @return */ public static int getGreatestCommonDivisor3(int a, int b) { if (a == b) { return a; } int big = a > b ? a : b; int small = a < b ? a : b; return getGreatestCommonDivisor3(big - small, small); } /** * 第四版本 * 九章算术 更相减损术和辗转相除法结合起来, 更相减损术上使用位移操作 * 更相减损术 :两个正整数a,b(a>b),他们的最大公约数等于a-b的差值c和较小数b的最大公约数 * 缺点:两数相差很大时,递归次数太大 * * @param a * @param b * @return */ public static int getGreatestCommonDivisor4(int a, int b) { if (a == b) { return a; } if ((a & 1) == 0 && (b & 1) == 0) { return getGreatestCommonDivisor4(a >> 1, b >> 1) << 1; } else if ((a & 1) == 0 && (b & 1) != 0) { return getGreatestCommonDivisor4(a >> 1, b); } else if ((a & 1) != 0 && (b & 1) == 0) { return getGreatestCommonDivisor4(a, b >> 1); } else { int big = a > b ? a : b; int small = a < b ? a : b; return getGreatestCommonDivisor4(big - small, small); } } public static void main(String[] args) { System.out.println(getGreatestCommonDivisor4(25, 5)); System.out.println(getGreatestCommonDivisor4(100, 80)); System.out.println(getGreatestCommonDivisor4(27, 14)); }}到此,关于"怎么用Java求最大公约数"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
最大
公约数
最大公约数
学习
两个
小数
方法
缺点
递归
很大
余数
差值
更多
次数
问题
帮助
实用
较大
接下来
同时
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手磨咖啡
互联网金融科技
互联网科技图片
疫情对互联网科技公司影响
互联网科技革命
北京互联网络科技有限公司
苏州互联网科技贷款公司
无锡溥仪互联网科技有限公司
中国的互联网科技企业的崛起
汽车互联网创新科技园
互联网对科技的发展
宝灵互联网科技有限公司
搜狐科技互联网
恒生互联网科技指数跳水
滨湖区互联网智能科技产品有哪些
产业互联网科技服务公司
新氧科技和美国互联网有关系吗
互联网硬科技公司
张家口科技产业互联网平台
互联网科技品牌
科技与互联网
无锡溥仪互联网科技有限公司
富国互联网科技创新基金
山东有哪些互联网科技公司
黑云互联网科技有限公司
互联网营销推广黑科技
富国互联网科技002692
华人运通互联网科技公司
高科技和互联网的现代国家
互联网科技企业文化