问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
思路:
第一步:读懂题目(因为刚开始没有读懂题目,打错了很多)。破题,输入一个数字n,从1~n中任选三个数使得他们的最小公倍数是其他组合里面最大的存在。eg输入:9,任选三个数9、8、7,他们的最小公倍数987=504.
第二步:选出这三个数,分情况讨论
1、如果n是奇数,以n=9为例,出现最大最小公倍数的三个数为9、8、7分别是n、(n-1)、(n-2)
2、如果n是偶数,以n=8为例,出现最大最小公倍数的三个数为8、7、5分别是n、(n-1)、(n-3),由于6、7、8中6,8有公因数2,不能形成最大最小公倍数,所以取5。
3、由于n、(n-3)之间如果3是n的因数,则n、(n-3)之间也存在公因数3,所以此时出现最大最小公倍数的三个数(n-1)(n-2)(n-3)
代码如下:
# include <stdio.h>
int main()
{
_int64 n;
scanf ("%I64d",&n);
if(n%2!=0)
printf("%I64d\n",n*(n-1)*(n-2));
else if(n%3!=0)
printf("%I64d\n",n*(n-1)*(n-3));
else
printf("%I64d\n",(n-2)*(n-1)*(n-3));
return 0;
}