• 技术文章 >Java >Java基础

    java中如何计算最小公倍数

    王林王林2019-11-27 14:39:49转载3703

    问题描述:

    已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。

    输入格式:

    输入一个正整数N。

    输出格式:

    输出一个整数,表示你找到的最小公倍数。

    样例输入:

    9

    样例输出:

    504

    数据规模与约定:

    1 <= N <= 106

    在线学习视频教程推荐:java课程

    思路:

    首先声明几个概念:

    两个非0相邻自然数的最小公倍数是它们的乘积;相邻两个奇数的最小公倍数是它们的乘积;相邻两个偶数(0除外)的最小公倍数是它们乘积的一半。

    现在上升到三个数的最小公倍数,要按照N的奇偶性分两种情况:

    一、当n为奇数:n、n-1、n-2的乘积

    二、当n为偶数:n-1、n-2、n-3是一组极大解,如果答案要大于当前值,只能是大于这3个数的乘积,那么只能把其中一个数变成n,并且三个数也要两两互质。n、n-2、n-3偶偶奇明显不互质;n、n-1、n-3偶奇奇;n、n-1、n-2偶奇偶明显不互质。

    那么答案只能是n-1、n-2、n-3或者是n、n-1、n-3。但是n、n-3虽然是一个奇数,一个偶数,但是它们不连续可能不互质例如5,6,3三个数。

    n为奇数:n、n-1、n-2

    n为偶数: n是3的倍数 n-1、n-2、n-3

    n不是3的倍数 n、n-1、n-3

    示例如下:

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner input=new Scanner(System.in);
            long N=input.nextLong();
            long temp=0;
            if(N<=2){
                System.out.println(N);
            }
            else if(N%2==0){
                temp=(N-1)*(N-2)*(N-3);
                if(N%3!=0){
                    temp=Math.max(temp,N*(N-1)*(N-3));
                }
                System.out.println(temp);
    
            }
    
            else {
                System.out.println(N*(N-1)*(N-2));
            }
        }
    
    
    }

    技巧:考虑N<3的情况,而且这道题注意用long。

    推荐java相关文章教程:java开发入门

    以上就是java中如何计算最小公倍数的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除
    专题推荐:java 计算 最小公倍数
    上一篇:java泛型详细介绍 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • java深入学习之static静态代码块• java中线程的中断与终止• java中抽象类与普通类、接口的区别分别是什么• java泛型详细介绍
    1/1

    PHP中文网