欧几里得--核桃的数量

历届试题 核桃的数量  
时间限制:1.0s   内存限制:256.0MB
   
问题描述

小张是软件项目经理,他带领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


代码:

import java.util.Scanner;

public class Main {
    public static int gcd(int p,int q)
    {
        if(q==0) return p;
        int r=p%q;
        return gcd(q,r);
    }
    public static void main(String[] args) {
        int a,b,c,s;
        Scanner sa=new Scanner(System.in);
        a=sa.nextInt();
        b=sa.nextInt();
        c=sa.nextInt();
        s=gcd(a,b);
        s=a*b/s;
        a=gcd(s,c);
        s=s*c/a;
        System.out.println(s);
    }

}

欧几里得算法(辗转相除法)用于求两个数的最大公约数,又由于两数字之积=最大公约数*最小公倍数,所以也可求最小公倍数

  public static int gcd(int p,int q)
    {
        if(q==0) return p;
        int r=p%q;
        return gcd(q,r);
    }


猜你喜欢

转载自blog.csdn.net/qq_38173003/article/details/79393728