最大最小公倍数

问题描述

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

输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定

1 <= N <= 106。

求解:

NO.1
刚看到题目,有点无从下手,最初的想法便是,通过遍历所有3个数字的组合形式求出他们的最小公倍数,然后从其中选取最大值。
但是这个想法马上就被自己pass掉了,原因无他,数据量太过于庞大,而且其中用来求最小公约数的方法会用到递归(a,b的最大公倍数 = a * b * gcd(a, b), gcd用来求最小公约数),必定会运行超时。没有好的想法,于是查看了网上的解决方案。

最好的解决方案就是先在数学层面将问题化简,然后辅以代码。
数学分析思路如下:

思路:若n 和 n-1和n-2 三个数 两两互质的话,那么结果就是这三个数的积。

根据数论知识:任意大于1的两个相邻的自然数都是互质的.

  • 当n是奇数时,n和n-2都是奇数,n-1是偶数,那么他们三个的公约数肯定不是2。因为这三个数是连续的,所以大于2的数都不可能成为他们或其中任意两个数的公约数了,结果就是他们三个的乘积.
  • 当n为偶数时,n*(n-1)(n-2)肯定不行,因为n和n-2都是偶数,那么只能将n-2改成n-3,即n(n-1)*(n-3),如果这三个数两两互质,那么肯定就是结果。但是因为n和n-3相差3,所以当其中一个数能被3整除时,另一个肯定也可以;而当其中一个不可以时,另一个肯定也不可以;因为n为偶数,n-3为奇数,所以2不可能成为他俩的公因子。对于大于3的数,肯定就都不可能成为这三个数或者其中任意两个数的公约数了.因此只需再对3进行判断:

  • 如果n能整除3,那么,n*(n-1)(n-3)就肯定不行了,因为n和n-3有了公约数3,结果肯定小了。那么就只能继续判下一个即n(n-1)(n-4)而这样n-4又是偶数,不行继续下一个n(n-1)(n-5)=n^3 -6*n^2 + 5*n ,而如果这个可以 ,那么其值肯定要小于(n-1)(n-2)(n-3) = n^3-6*n^2+11n-6(对于n>1来说都成立),而(n-1)(n-2)(n-3)由上一个奇数结论可知是一个符合要求的。因此,到n-5就不用判断了,答案为(n-1)(n-2)*(n-3);

  • 若n不能整除3,那么结果就是n*(n-1)*(n-3),因为n和n-3都不能整除3,此时n-1能不能整除3都无关紧要了,而对于其它数都是不可能的,上面已证。

参考链接

解决代码如下:

import java.math.BigInteger;
import java.util.Scanner;

/** 
 * @author 作者 : Cactus
 * @version 创建时间:2018-3-19 下午07:45:10 
 */
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        BigInteger N = new BigInteger(String.valueOf(n));
        sc.close();
        BigInteger N1 = new BigInteger(String.valueOf(n - 1));
        BigInteger N2 = new BigInteger(String.valueOf(n - 2));
        BigInteger N3 = new BigInteger(String.valueOf(n - 3));
        if(n <= 2){
            System.out.println(N);
        }else if(n % 2 != 0){
            System.out.println(N.multiply(N1.multiply(N2)));
        }else{
            if(n % 3 != 0){
                System.out.println(N.multiply(N1.multiply(N3)));
            }else{
                System.out.println(N1.multiply(N2.multiply(N3)));
            }
        }

    }
}

猜你喜欢

转载自blog.csdn.net/cactus_lrg/article/details/79617413