最大最小公倍数
问题描述
已知一个正整数 N,问从 1~N-1 中任选出三个数,他们的最小公倍数最大可以为多少。
输入格式
输入一个正整数 N。
输出格式
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
数据规模与约定
1 <= N <= 106。
思路与想法
没错,今天的题我又差点看不懂了,然后我一开始想的是找质数,在范围里面找质数
也写了个代码,但是我发现。。。有点不对劲,草率了,无论什么条件都不符合要求规则,就算能写出来代码也会很复杂
于是我就去向度娘取经了,才知道这是一个算法规则,是叫贪心算法的吧?。。。
代码如下
C++
#include <iostream>
#include <string>
using namespace std;
void main(){
int i;
int N;
int max;
cin>>N;
if(N%2!=0){ //奇数
max=N*(N-1)*(N-2);
cout<<max;
}
else { //偶数
if(N%3==0){
max=(N-1)*(N-2)*(N-3);
cout<<max;
}
else{
max=N*(N-1)*(N-3);
cout<<max;
}
}
return ;
}
java
import java.util.Scanner;
public class minMax {
public static void main(String[] args) {
Scanner in= new Scanner(System.in);
int N = in.nextInt();
int i;
int max;
if(N%2!=0){ //奇数
max=N*(N-1)*(N-2);
System.out.print(max);
}
else { //偶数
if(N%3==0){
max=(N-1)*(N-2)*(N-3);
System.out.print(max);
}
else{
max=N*(N-1)*(N-3);
System.out.print(max);
}
}
}
}