算法训练 最大最小公倍数
时间限制:1.0s 内存限制:256.0MB
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
思路
一看给的数据范围那么大,时间还1s,暴力是绝对超时的,这时候就要想,肯定是有数学规律在的。要清楚下面两个定理:
定理1:大于1的两个相邻的自然数必定互质
定理2:两个数的最小公倍数在最大的情况就是当两个数互质的时候,他们的最小公倍数就是这两个数的乘积
这时候就好了,我们需要找三个互质的数,让他们三个乘积最大就OK啦,肯定是从n往下乘了,但这时候三个连续的数,有两种情况使其互质
1. 偶 X 奇 X 偶
2. 奇 X 偶 X 奇
这时候就考虑n的奇偶性了:
1. n为奇数