/**
* 最大公约数与最小公倍数
* Greatest common divisor
* Least common multiple
*/
public class GcdAndLcm {
public static void main(String[] args) {
int a = 20;
int b = 8;
System.out.println(gcd(a,b));
System.out.println(lcm(a,b));
int[] arr = new int[]{256,40,8,16};
System.out.println(gcdN(arr));
System.out.println(lcmN(arr));
}
private static int gcd(int a, int b){
while(a!=0){
int temp = b%a;
b = a;
a = temp;
}
return b;
}
private static int lcm(int a, int b){
return a*b/gcd(a,b);
}
// 求一个int数组中所有数据的最大公约数
private static int gcdN(int[] arr){
// 不修改原有数组,操作原数据的拷贝
int length = arr.length;
int[] arrBackup = new int[length];
System.arraycopy(arr,0,arrBackup,0,length);
for(int i=0;i<length-1;i++){
arrBackup[i+1] = gcd(arrBackup[i],arrBackup[i+1]);
}
return arrBackup[length-1];
}
// 求一个int数组中所有数据的最小公倍数
private static int lcmN(int[] arr){
// 不修改原有数组,操作原数据的拷贝
int length = arr.length;
int[] arrBackup = new int[length];
System.arraycopy(arr,0,arrBackup,0,length);
for(int i=0;i<length-1;i++){
arrBackup[i+1] = lcm(arrBackup[i],arrBackup[i+1]);
}
return arrBackup[length-1];
}
}
No3. 最大公约数与最小公倍数 (非递归实现)
最新推荐文章于 2023-07-27 16:08:25 发布