求解最大公约数,最小公倍数(Java语言实现)
Java代码实现
- 一、求最大公约数
- (1)辗转相除法实现(method of successive division)
- (2)辗转相减法实现(Rolling subtraction)
- (3)穷举法实现
- 二、求最小公倍数(least common multiple)
有一个公式记住:a*b=最小公倍数 x 最大公约数
一、求最大公约数 (1)辗转相除法实现(method of successive division)
【求解最大公约数,最小公倍数(Java语言实现)】java代码实现,不管a,b的大小,结果都是一样的
public static int division(int a,int b) {
while(a % b!=0) {//直到余数为0 ,最大公约数为上一步的余数
temp= a%b;
a = b;
b = temp;
}
return b;
}
(2)辗转相减法实现(Rolling subtraction)
//Rolling subtraction
//辗转相减法
public static int substract(int a,int b) {
while(true) {
if(a>b) {
a=a-b;
}else if(a
(3)穷举法实现
通过循环,将两个数中任意一个数定义为循环起点“i”,然后将每循环一次,进行一次判断,当a和b中的两个数同时对循环元素i取余,满足条件的 “i” 即为最大公约数
//穷举
public static int Exhaus(int a,int b) {
for(int i=a;
;
i--)
if(a%i==0 && b%i==0)
return i;
}
二、求最小公倍数(least common multiple) 前面讲过的,a*b=最大公约数 x 最小公倍数,这下你就清楚了吧
这里我们直接把前面的代码拿过来
int leastCommonMultiple=(a*b)/Exhaus(a,b);
本次内容分享的全部代码
import java.util.Scanner;
/**
* @author gorit
* @date 2019年4月2日
*最大公约数以及最小公倍数的实现
* */
public class greatestCommonDivisor {
static int temp;
//定义一个全局的中间变量
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=in.nextInt();
System.out.println(a+"和"+b+"的辗转相除法得到的结果为:"+division(a, b));
System.out.println(a+"和"+b+"的辗转相减法得到的结果为:"+substract(a, b));
System.out.println(a+"和"+b+"的穷举法得到的结果为:"+Exhaus(a, b));
System.out.println(a+"和"+b+"的最小公倍数为:"+(a*b)/Exhaus(a, b));
}
//method of successive division
//辗转相除法的实现
public static int division(int a,int b) {
while(a % b!=0) {//直到余数为0 ,最大公约数为上一步的余数
temp= a%b;
a = b;
b = temp;
}
return b;
}
//Rolling subtraction
//辗转相减法
public static int substract(int a,int b) {
while(true) {
if(a>b) {
a=a-b;
}else if(a
程序样例运行结果
文章图片
文章编辑于
2019年4月2日23:52:03
推荐阅读
- 基础课|使用深度优先搜索(DFS)、广度优先搜索(BFS)、A* 搜索算法求解 (n^2 -1) 数码难题,耗时与内存占用(时空复杂度)对比(附((n^2 - 1) 数码问题控
- 用栈来求解汉诺塔问题
- Python求解谷歌高速公路招聘广告({|Python求解谷歌高速公路招聘广告:{ 无理数e中前十位连续的素数 }.com)
- 最大公约数相关原理
- 欧几里得算法 算最大公约数
- 求多个数的最大公约数和最小公倍数,用三种方法实现。
- C++编程 求最大公约数和最小公倍数
- 牢记gcd最大公因数和lcm最小公倍数
- C++ 实现最小公倍数
- 关于欧几里得算法和拓展欧几里德定理的证明(不定方程求解方法)