题意:给出一个数字n,要求不比n大的三个数字的最小公倍数。
题解:最小公倍数要最大,最优是三个最大公约数是1的数字相乘,所以如果n是奇数肯定满足n*(n-1)(n-2)最大,如果n是偶数,就要看n是否能被3整除,如果n % 3 != 0,那么可以满足n(n-1)(n -3)最大,否则(n-3) % 3 == 0,只能取(n-1)(n-2)*(n-3)为解。
#include <stdio.h>
long long n;
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
int main() {
while (scanf("%lld", &n) == 1) {
if (n == 1)
printf("1\n");
else if (n == 2)
printf("2\n");
else {
if (n % 2 == 1)
printf("%lld\n", n * (n - 1) * (n - 2));
else {
if (n % 3 == 0)
printf("%lld\n", (n - 1) * (n - 2) * (n - 3));
else
printf("%lld\n", n * (n - 1) * (n - 3));
}
}
}
return 0;
}