问题 : 最小公倍数
题目描述
已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。
输入
输入一个正整数N。
输出
输出一个整数,表示你找到的最小公倍数。
样例输入
9
样例输出
504
提示
数据规模与约定
1 <= N <= 106。
正确答案:
求最小公倍数,要明确两种特殊情况
#include<iostream>
using namespace std;
int main(){
int k=0;
long long n,sum;//这里使用long long 整型,由于数据存在较大的情况,用int型会造成数据溢出
cin>>n;
if(n<3){ //若输出的小于三,取不到三个数,则输入的这个数就是最小公倍数,也就是要么是1要么是2
cout<<n<<endl;
}else{ //当大于三个数时,取最大数的最小公倍数,基本想到的是取这些数里最大的三个,然后相乘取到公倍数
if(n%2==0){ //但是这里存在两种特殊情况
if(n%3==0){
sum=(n-1)*(n-2)*(n-3); //最大的一位既能被二整除,又能被三整除,最大位开始,依次减一
}
sum=n*(n-1)*(n-3); //最大的一位能被二整除,则取到的三位,最小的一位要减一
}else{
sum=n*(n-1)*(n-2);//不属于上述两种情况,直接取最后三位相乘,取最小公倍数
}
cout<<sum;
}
}