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