問題の説明:
正の整数 N が与えられた場合、1 ~ N からランダムに選択された 3 つの数値の最大最小公倍数は何かを尋ねます。
入力形式:
正の整数 N を入力します。
出力形式:
見つかった最小公倍数を表す整数を出力します。
サンプル入力:
9
サンプル出力:
504
データのスケールと規則:
1 <= N <= 106
推奨されるオンライン学習ビデオ チュートリアル: java コース
アイデア:
最初にいくつかの概念を宣言します:
隣接する 2 つのゼロ以外の自然数の最小公倍数はその積、隣接する 2 つの奇数の最小公倍数はその積、隣接する 2 つの偶数 (0 を除く) の最小公倍数はその積の半分です。
さて、3 つの数値の最小公倍数に関しては、N のパリティに応じて 2 つの状況があります:
1. n が奇数の場合: n、n-1 , n-2 Product
2. n が偶数の場合: n-1、n-2、n-3 は最大解のセットです。答えが現在の値より大きい場合は、これら 3 つの数値より大きい積のみを指定すると、そのうちの 1 つの数値のみが n に変更でき、3 つの数値も互いに素でなければなりません。 n、n-2、n-3 の偶数と奇数は明らかに互いに素ではありません。n、n-1、n-3 は偶数と奇数です。n、n-1、n-2 の偶数と奇数は明らかに互いに素ではありません。
その場合、答えは n-1、n-2、n-3 または n、n-1、n-3 のみになります。ただし、n と n-3 は奇数と偶数ですが、連続しておらず、5、6、3 の 3 つの数字のように互いに素でない場合もあります。
n は奇数です: n、n-1、n-2
n は偶数です: n は 3 の倍数 n-1、n-2、n-3
n は 3 の倍数ではありません n、n-1、n-3
例は次のとおりです:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); long N=input.nextLong(); long temp=0; if(N<=2){ System.out.println(N); } else if(N%2==0){ temp=(N-1)*(N-2)*(N-3); if(N%3!=0){ temp=Math.max(temp,N*(N-1)*(N-3)); } System.out.println(temp); } else { System.out.println(N*(N-1)*(N-2)); } } }
ヒント: N
推奨される Java 関連記事チュートリアル: Java 開発の入門
以上がJavaで最小公倍数を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。