1. 题目要求
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 10^6。
2. 基本概念
首先要知道什么是最小公倍数,以及怎么去求最小公倍数。
2.1 最小公倍数的概念
公倍数(common multiple)指在两个或两个以上的自然数中,如果它们有相同的倍数,这些倍数就是它们的公倍数,其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数
2.2 最小公倍数计算方法
2.2.1 分解质因数法
先把这几个数的质因数写出来,最小公倍数等于它们所有的质因数的乘积(如果有几个质因数相同,则比较两数中哪个数有该质因数的个数较多,乘较多的次数)。
看看下面例子就知道如何去做了。求45和30的最小公倍数。
45=3*3*5
30=2*3*5
45和30的不同质因数有一个2;共同的质因数有两个,分别是3、5。
接下来共同的质因数,45中出现了两个3,所以计算最小公倍数的时候乘两个3。共同质因数5在45和30都只出现了一次,计算最小公倍数的时候乘一个5就行了。
因此,45和30的最小公倍数为:2*3*3*5=90
2.2.2 公式法
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。
例如,求45和30的最小公倍数。
45和30的最大公约数为15,两者之积为45*30=1350
然后用1350除以15,即1350÷15=90
3. 解题思路
通过分解质因数法可以知道,最小公倍数的计算过程中,会因为有一些共同质因数,而导致最小公倍数小于两者的乘积,对于三个数的最小公倍数也是如此,因此我们要尽量避免这种因为共同质因数而带来的损失,就会使得我们得到的最小公倍数是局部最大的。因此只要我们找出三个最大的互质数之积,这题就解决了。
- 由于连续的3个数中,如果是奇数 偶数 奇数 ,那这三个数一定互质,证明方法也很简单。我们用反证法:
大前提是 n 为奇数,则 n-2、n-1、n这三个数满足奇数 偶数 奇数
我们先证明 n 和 n-2 这两个奇数互质。
假设 n 和 n-2 不互质,那么就存在一个公约数 p(p>1,且为整数),使得 n = p * q ( q 为整数),n-2 =