算法训练 最大最小公倍数
时间限制:1.0s 内存限制:256.0MB
问题描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 。
分析:此题事实上是要求不超过的最大的三个互质数。
1)若为奇数,则可写为,由于“相邻的两个自然数互质”和“相邻的两个奇数互质”,于是最大的三个互质数应当为,即。
2)若为偶数,则可写为。假若最大的三个互质数中包含了,而和有公因数2,所以可能的三个互质数为。但是,如果为3的倍数,则和有公因数3,此时不可能互质,所以此时的互质数应该是,这三个数(奇、偶、奇)一定互质。综上所述,当为3的倍数时,最大的三个互质数为;当不为3的倍数时,最大的三个互质数为。
#include <stdio.h>
int main()
{
long long int N;
scanf("%lld", &N);
if (N % 2 == 0)
{
if (N % 3 == 0)
printf("%lld", (N - 3) * (N - 2) * (N - 1));
else
printf("%lld", (N - 3) * (N - 1) * N);
}
else
{
printf("%lld", (N - 2) * (N - 1) * N);
}
return 0;
}