已知一個正整數N,問從1~N中任選出三個數,他們的最小公倍數最大可以為多少。
輸入格式輸入一個正整數N。
輸出格式輸出一個整數,表示你找到的最小公倍數。樣例輸入9樣例輸出504數據規模與約定1 <= N <= 106。
分析
1---N中我們應該從大到小考慮,首先我們最能想到的就是 N為奇數的時候 n,n-1,n-2,(n-1)為偶數所以此時最大的最小公倍數為三個數的乘積(由于任意連續的奇數互質)所以此時的最大的最小公倍數為三個數的連乘積的形式如果n等于偶數那么n與n-2必定有質因數2,所以此時n ,n-1,n-3由于n為偶數,所以n-1,n-3必定為奇數,此時還會出現一種可能性就是n與n-3有質因數3所以我們必須判斷是否n能被3整數,如果能我們將n轉換為n-2即可此時我們解決了函數問題,由于函數的規模,所以我們決定選用long long 的數據類型#include<iostream>using namespace std;//最小公倍數 最小公倍數=兩整數的乘積÷最大公約數long long MinCom(long long n)//1-n中三個數最大的最小公倍數{ long long max; if (n % 2 == 1)max=n*(n-1)*(n-2); else { if (n % 3 == 0) max = (n - 1)*(n - 2)*(n - 3); else max = n*(n - 1)*(n - 3); } return max;}int main(){ int n; cin >> n; cout << MinCom(n); return 0;}
新聞熱點
疑難解答