历届试题-核桃的数量
问题描述
小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:
1. 各组的核桃数量必须相同
2. 各组内必须能平分核桃(当然是不能打碎的)
3. 尽量提供满足1,2条件的最小数量(节约闹革命嘛)
输入格式
输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c<30)
输出格式
输出一个正整数,表示每袋核桃的数量。
样例输入1
2 4 5
样例输出1
20
样例输入2
3 1 1
样例输出2
3
思考过程:
1.要求三个小组都可以平分而且尽量少,则是要求 求最小的公倍数。
2.两个数的最小公倍数是找是否有数能同时被n(n>=2)取余==0,
如果可以则有公因数,两个数相乘后除以最大公因数。即求到a,b最大公因数
3.接着则是将两个数的最大公因数与第三个数进行求最大公因数。即求到a,b,c的最大公因数
1 import java.util.Scanner; 2 public class Main { 3 4 public static void main(String[] args) { 5 // TODO Auto-generated method stub 6 Scanner input = new Scanner(System.in); 7 int a = input.nextInt();//输入需要的三个数 ---求公倍数 8 int b = input.nextInt(); 9 int c = input.nextInt(); 10 int k=0;//过度两个数的公倍数 11 int n=0; 12 for(int i=2;i<=Math.min(a, b);i++){//判断两个数之间的最小公倍数 13 if(b%i==0&&a%i==0) { 14 k=a*b/i; 15 } 16 } 17 if(k==0){//过度a*b的数 18 k=a*b; 19 } 20 for(int j=2;j<=Math.min(k, c);j++) { 21 if(k%j==0&&c%j==0) { 22 n=k*c/j; 23 } 24 } 25 if(n==0){ 26 n=k*c; 27 } 28 System.out.println(n); 29 } 30 31 }
时间: 2024-10-13 21:01:18