您的位置:首页 > 其它

数学问题——进制&GCD&LCM

2018-03-31 17:13 666 查看

十转任意进制

十转任意进制最优解 传送门

核心代码

public static int gcd(int a, int b) { // 获取最大公约数
if (b==0) {
return a;
}else {
return gcd(b, a%b);
}
}


n个数求最大公约数

public class n个数求最小公倍数 {
public static void main(String[] args) {
int arr[] = { 14, 21, 5 };
System.out.println(lcm(arr));
}

// n个数求最小公倍数
public static int gcd(int a, int b) { // 获取最大公约数
int temp;
if (a < b) {
temp = a;
a = b;
b = temp;
}
if (a % b == 0) {
return b;
} else {
return gcd(b, a % b);
}
}

public static int lcm(int arr[]) { // 获得最小公倍数
int x, y, num = arr[0], i, gcd;
// 去数组的第一和第二个数,计算它们的公倍数,然后再取第三个数,
// 和之前的公倍数计算它们的公倍数,直到只有一个数。
for (i = 0; (i + 1) < arr.length; i++) {
x = num;
y = arr[i + 1];
// 计算公约数
gcd = gcd(x, y);
// 计算公倍数
num = x / gcd * y / gcd * gcd;
}
return num;
}
}


n个数求最小公倍数

public class n个数求最小公倍数 {
public static void main(String[] args) {
int arr[] = { 14, 21, 5 };
System.out.println(lcm(arr));
}

// n个数求最小公倍数
public static int gcd(int a, int b) { // 获取最大公约数
int temp;
if (a < b) {
temp = a;
a = b;
b = temp;
}
if (a % b == 0) {
return b;
} else {
return gcd(b, a % b);
}
}

public static int lcm(int arr[]) { // 获得最小公倍数
int x, y, num = arr[0], i, gcd;
// 去数组的第一和第二个数,计算它们的公倍数,然后再取第三个数,
// 和之前的公倍数计算它们的公倍数,直到只有一个数。
for (i = 0; (i + 1) < arr.length; i++) {
x = num;
y = arr[i + 1];
// 计算公约数
gcd = gcd(x, y);
// 计算公倍数
num = x / gcd * y / gcd * gcd;
}
return num;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: