蓝桥杯——最大最小公倍数

刚开始看到这个题目的时候第一想法就是枚举1~N中任意三个数,然后求它们的最小公倍数,从这些最小公倍数中再选择最大的一个即为正确答案,可是1<=N<=10^6,如果要枚举任意三个数,最简单的做法就是三个嵌套的for循环,这样的话时间复杂度为O(N^3),会运行超时的。 还有一个用int类型长度会不够!

问题描述

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

输入格式

输入一个正整数N。

输出格式

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

样例输入

9

样例输出

504

数据规模与约定

1 <= N <= 106。

代码实现(java):

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long x = sc.nextInt();
        long max;
        if(x <= 2) {
            max = x;
        }else if(x % 2 == 1) {
            max = x * (x-1) * (x-2);
        }else {
            if(x % 3 == 0) {
                max = (x - 1) * (x - 2) * (x -3);
            }else {
                max = x * (x - 1) * (x -3);
            }
        }
        System.out.println(max);
    }
}
 

猜你喜欢

转载自blog.csdn.net/qq_40205116/article/details/87941864
今日推荐