java 辗转相除_Java实现辗转相除法并求取最大公约数、最小公倍数
算法介绍
辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。
它的具体做法是:
用较大数除以较小数,再用出现的余数(第一余数)去除除数,
再用出现的余数(第二余数)去除第一余数,
如此反复,直到最后余数是0为止。
如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。
算法描述如下:
⒈ 令r为a/b所得余数(0≤r
⒉ 互换:置 a←b,b←r,并返回第一步。
例如:求 1997 和 615 两个正整数的最大公约数,是这样进行的:
1997=3x615+152
615=4x152+7
152=21x7+5
21=1x5+2
5=2x2+1
2=2x1+0
代码实现如下
public int getHighestConventionNumber(int m,int n){
//辗转相除法:求取最大公约数
if(m < n){
m= m ^ n;
n= m ^ n;
m= m ^ n;
}
m % n == 0 ? return n : return getHighestConventionNumber(n, m % n);
/*if(m % n == 0){
return n;
}esls{
return fun(n, m % n);
}*/
}
public int getLowestCommonMultiple(int m, int n){
// 求取最小公倍数:m*n/最大公约数
return m * n / getHighestConventionNumber(m,n);
}
public static void main(String [] agrs){
System.out.println(getHighestConventionNumber(3,5));
System.out.println(getLowestCommonMultiple(3,5));
System.out.println(getHighestConventionNumber(6,9));
System.out.println(getLowestCommonMultiple(6,9));
System.out.println(getHighestConventionNumber(4,8));
System.out.println(getLowestCommonMultiple(4,8));
}
java 辗转相除_Java实现辗转相除法并求取最大公约数、最小公倍数相关推荐
- java数字相减_Java的百日计划(day14)
###14.01_常见对象(正则表达式的概述和简单使用) * A:正则表达式 * 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. * 作用:比 ...
- java 月度相减_java根据日期获取月龄,按照减法原理,先day相减,不够向month借;然后month相减,不够向year借;最后year相减。...
/** * 函数名: getMonthNum * 功能: 相差月数 * 参数: @param start 开始时间 * 参数: @param end 结束时间 * 返回值: int */ public ...
- python辗转相除_Python基于辗转相除法求解最大公约数的方法示例
Python基于辗转相除法求解最大公约数的方法示例 本文实例讲述了Python基于辗转相除法求解最大公约数的方法.分享给大家供大家参考,具体如下: 之前总结过一次高德纳TAOCP中的最大公约数求解,其 ...
- python辗转相除_使用辗转相除法求两个数的最大公因数(python实现)
数学背景: 整除的定义: 任给两个整数a,b,其中b≠0,如果存在一个整数q使得等式 a = bq 成立,我们就说是b整除a,记做b|a. 性质1:如果c|a,c|b,且对于任意的整数m,n,则有c| ...
- java数组排列组合_java算法题--递归求数组中数字排列组合问题
java算法题–递归求数组中数字排列组合问题 题目:有一个数组{1,2,3},输出数组中数字的所有可能组合: 比如:123.132.213- 解题思路 通过递归不停的交换数组中的两个数(当然,肯定是有 ...
- java模拟银行存取_JAVA模拟银行存钱,取钱操作以及计算利息操作
/* *程序的版权和版本声明部分: *程序的版权和版本声明部分: *Copyright(c)2013,烟台大学计算机学院学生 *All rights reserved. *文件名称: *作者:尚振伟 ...
- java set集合元素_Java面试题10(如何取到set集合的第一个元素)
1.如何取到set集合的第一个元素. public static voidmain(String[] args) { Set set= newHashSet(); set.add("xixi ...
- java模拟登陆系统_Java模拟登录系统抓取内容【转载】
1 @Component2 public class Login extendsBaseJobs {3 4 SimpleDateFormat sdf = new SimpleDateFormat(&q ...
- php最大公约数辗转相除程序,[转]辗转相除求最大公约数
转:蓝魔之泪de万事屋百度博客 http://hi.baidu.com/didihl/blog/item/533b1fec7cea252063d09f82.html 辗转相除算法的简介 在数论中,辗转 ...
最新文章
- 安装H3C的各种问题
- 利用存储过程来实现分页性能比较
- 小马源码_Java互联网架构-重新认识Java8-HashMap-不一样的源码解读
- python语句结束符_python中判断文件结束符的具体方法
- 【python】os 模块使用笔记
- 【笔记】k-Nearest Neighbors(KNN/k近邻)原理
- MemReduct内存自动清理工具
- echars中国地图,省份名字居中
- 2021-12-06 自动化专业C语言上机作业参考答案12
- Snipaste2.7.3下载安装与使用(超实用的截图利器)
- 泛在网、物联网与传感器网络有什么区别
- selenium自动化购买火车票+存储数据库
- 中科银谷:企查查天眼查的企业工商数据是从哪里来的?
- 解谜游戏中谜题与剧本
- 用html作小米官网首页效果,html+css实现小米商城首页静态页面
- linux rm 文件找回_linux rm -rf * 文件恢复记
- 第十三弹 服务数据的定义与使用
- Jekyll 学习笔记
- echarts 全国各省市地图切换展示
- 计算机毕业设计Java班费收支管理系统(源码+系统+mysql数据库+lw文档)
热门文章
- 金山办公和金山软件是同一家公司?复盘金山办公成长史 | 云计算
- 字符串的扩展距离问题(动态规划)
- 【dubbo】No provider available from registry 127.0.0.1:2181 for service com.dubbo.api.service
- linux 无法加载动态库,51CTO博客-专业IT技术博客创作平台-技术成就梦想
- BERT: 理解上下文的语言模型
- Note For Linux By Jes(18)-X Window 配置介绍
- 解决出行难题,共享巴士小程序开发
- zData 数据库一体机v5.4和 zDBM 数据库极速恢复平台v2.8正式发布!
- PMP 11.27 考试倒计时37天!来提分啦!
- nyoj42一笔画问题 【欧拉回路】