美文网首页
算法训练-最大最小公倍数

算法训练-最大最小公倍数

作者: 嘉敏的豆子 | 来源:发表于2018-03-21 20:25 被阅读0次

    题目要求

    已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。

    需要理解的性质

    1. 1和任意大于1的自然数都互质
    2. 2和任意奇数都互质
    3. 相邻的两个自然数互质
    4. 相邻的两个奇数互质
    5. 不相同的两个质数互质
    6. 一个数是合数,另一个是质数,除合数是质数的倍数外,一般都是互质的,例:34和7

    所以

    1. n为奇数
      ans = n * (n-1) * (n-2);

    2. n为偶数
      1˚ n%3 != 0时 ans = n(n-1)(n-3);
      2˚ n%3 == 0时 ans = (n-1)(n-2)(n-3);

    #include <stdio.h>
    #include <iostream>
    #include <cmath>
    #include <string>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    int main(){
        int n;
        cin>>n;
        ll ans;
        if(n % 2)
            ans = (ll)n*(n-1)*(n-2);
        else if(n % 3 == 0)
            ans = (ll)(n-1)*(n-2)*(n-3);
        else
            ans = (ll)n*(n-1)*(n-3);
        cout<<ans<<endl;
        return 0;
    }
    

    (留下了数学成绩不好的眼泪……

    相关文章

      网友评论

          本文标题:算法训练-最大最小公倍数

          本文链接:https://www.haomeiwen.com/subject/odsnqftx.html