【java最大公约数和最小公倍数】
2013-09-06 09:51
381 查看
求两个数的最小公倍数和最大公约数是最基本也是最经典的算法之一。现在我们来介绍一下这两个算法的思想,以及最小公倍数和最大公约数之间的联系(这是很多人忽略的)。最后我们会用java来实现这两个算法。
最大公约数:
求最大公约数一般采用欧几里德算法。
欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数。其计算原理依赖于下面的定理:
定理: gcd(a, b) = gcd(b, a mod b) //此函数作用是求最大公约数
代码如下:
public static void main(String[] args) {
System.out.println("(求最大公约数)请依次输入两个数的值:");
Scanner s = new Scanner(System.in);
int a = s.nextInt();
int b = s.nextInt();
System.out.println(a+"和"+b+"的最大公约数是:"+caculate(a,b));
}
private static int caculate(int a, int b) {
while(a != b){
if(a > b){
a = a - b;
}
else{
b = b - a;
}
}
return a;
}
最大公约数:
最大公约数好像就没有例如欧几里得算法这样的现成算法了,那怎么办呢?
别急,因为实际上最大公约数和最小公倍数之间有着某种不可言喻的关系的!!!
假如有a,b两个数。我们把a看成由两部分组成的:a和b的共有部分(最大公约数),a的私有部分。b也看成:a和b的共有部分和b的私有部分。
最大公约数:
求最大公约数一般采用欧几里德算法。
欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数。其计算原理依赖于下面的定理:
定理: gcd(a, b) = gcd(b, a mod b) //此函数作用是求最大公约数
代码如下:
public static void main(String[] args) {
System.out.println("(求最大公约数)请依次输入两个数的值:");
Scanner s = new Scanner(System.in);
int a = s.nextInt();
int b = s.nextInt();
System.out.println(a+"和"+b+"的最大公约数是:"+caculate(a,b));
}
private static int caculate(int a, int b) {
while(a != b){
if(a > b){
a = a - b;
}
else{
b = b - a;
}
}
return a;
}
最大公约数:
最大公约数好像就没有例如欧几里得算法这样的现成算法了,那怎么办呢?
别急,因为实际上最大公约数和最小公倍数之间有着某种不可言喻的关系的!!!
假如有a,b两个数。我们把a看成由两部分组成的:a和b的共有部分(最大公约数),a的私有部分。b也看成:a和b的共有部分和b的私有部分。
相关文章推荐
- 求两数最大公约数,最小公倍数-Java
- 最大公约数和最小公倍数--java实现
- 最大公约数和最小公倍数解法(java)
- 最大公约数和最小公倍数 in Java
- java语言求最小公倍数和最大公约数的三种算法
- Java sdut acm 1131 CC++训练1---最大公约数与最小公倍数
- java经典算法_006最大公约数,最小公倍数
- java求多个数的最大公约数,最小公倍数。
- Java小程序:辗除法求两个正整数最大公约数和最小公倍数
- Java 辗转相除法 求两正整数最大公约数及最小公倍数
- java之两个数求最小公倍数与最大公约数
- 最大公约数和最小公倍数及二者之间的联系(java)
- java实现最大公约数和最小公倍数(每天一道算法题)
- 最大公约数与最小公倍数(java)
- Java-辗转相除法(求最小公倍数与最大公约数)
- Java编写最大公约数和最小公倍数
- java 最大公约数 最小公倍数 用函数实现
- Java基础编程1—最大公约数和最小公倍数
- Java最大公约数和最小公倍数
- java求多个数的最大公约数,最小公倍数。