核桃的数量

问题描述
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);
    }
}

运行结果
请添加图片描述

请添加图片描述

posted @ 2021-07-28 21:04  小芦荟同学  阅读(124)  评论(0编辑  收藏  举报