问题描述
1.每组分的核桃数量相同
2。各组比必须能平分核桃
3.尽量提供满足1、2的条件
输入gesh
输入包含三个正整数a、b、c,用空格分开(a、b、c < 30)
输出格式
输出一个整数
样例输入
2 4 5
样例输出
20
题目分析:
-
这题就是求三个数的最小公倍数
-
求三个数的最小公倍数 <— 求两个数的最小公倍数 <— 求两个数的最大公约数
-
用辗转相除法求出两个数的最大公约数
辗转相除法
用较大的数除以较小的数
用出现的余数(第一个)除除数
再用出现的余数(第二个)除除数
…………
直到余数为0
最后的除数就是这两个数的最大公约数
例:
3139 和 2117 的最大公约数
3139 / 2117 =1……1022
2117 / 1022 = 2……73
1022 / 73 = 14……0
辗转相除法代码
int gcd(int a,int b){
int t = 0;
while(a % b != 0){ a%b=0:循坏结束标志
t = a % b;
a = b;
b = t;
}
return b;
}
或
public static int gcd(int a,int b){
if( a % b == 0){
return ab;
}
else
return gcd(b,a % b);
}
代码实现
import java.util.Scanner;
public class LCM {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
int abLCM = a * b / gcd(a,b); // abLCM:a、b的最小公倍数
int abcLCM = abLCM * c / gcd(abLCM,c); // abcLCM:a、b、c的最小公倍数
System.out.println(abcLCM);
}
public static int gcd(int a,int b){
return a % b == 0 ? b : gcd(b,a % b);
}
}
运行结果