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

题目要求 已知一个正整数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 #include #include #include #include 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<

【算法训练-最大最小公倍数】(留下了数学成绩不好的眼泪……

    推荐阅读