题目描述
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
输入描述:
输入两个正整数A和B。
输出描述:
输出A和B的最小公倍数。
示例1
输入
5
7
输出
35
public int lcm(int x, int y) {
for (int i = 1; i < x * y; i++) {
if (i % x == 0 && i % y == 0)
return i;
}
return x * y;
}
static int gcd(int a,int b){
return b == 0 ? a : gcd(b,a%b);
}
//求ab之间的最小公倍数
static int lcm(int a,int b){
return a * b / gcd(a,b);
}
求最大公约数:
1,欧几里得算法求最大公约数
public static int gcd1(int num1, int num2) {
int temp = num1 % num2;
while (temp != 0) {
num1 = num2;
num2 = temp;
temp = num1 % num2;
}
return num2;
}
2,还可以从num1和num2的最小值找起,一直往下减,直到找到为止
public static int gcd2(int num1, int num2) {
int temp = Math.min(num1, num2);
while (true) {
if (num1 % temp == 0 && num2 % temp == 0)
break;
else
temp--;
}
return temp;
}
public static int gcd2_1(int num1, int num2) {
int temp = Math.min(num1, num2);
while (num1 % temp != 0 || num2 % temp != 0) {
temp--;
}
return temp;
}
3,还可以辗转相减求得
public static int gcd3(int num1, int num2) {
while (true) {
if (num1 > num2)
num1 -= num2;
else if (num1 < num2)
num2 -= num1;
else
return num1;
}
}
4,还可以使用递归的方式
public static int gcd4(int a, int b) {
if (a % b == 0)
return b;
return gcd4(b, a % b);
}