首頁 > Java > Java基礎 > 主體

java中如何計算最小公倍數

王林
發布: 2019-11-27 14:39:49
轉載
5929 人瀏覽過

java中如何計算最小公倍數

問題描述:

已知一個正整數N,問從1~N中任選出三個數,他們的最小公倍數最大可以是多少。

輸入格式:

輸入正整數N。

輸出格式:

輸出一個整數,表示你找到的最小公倍數。

範例輸入:

9

範例輸出:

#504

資料規模與約定:

1 <= N <= 106

線上學習影片教學推薦:java課程

想法:

#首先聲明幾個概念:

兩個非0相鄰自然數的最小公倍數是它們的乘積;相鄰兩個奇數的最小公倍數是它們的乘積;相鄰兩個偶數(0除外)的最小公倍數是它們乘積的一半。

現在上升到三個數的最小公倍數,要依照N的奇偶性分兩種情況:

一、當n為奇數:n、n-1、n-2的乘積

二、當n為偶數:n-1、n-2、n-3是一組極大解,若答案大於目前值,只能是大於這3個數的乘積,那就只能把其中一個數變成n,三個數也要兩兩互質。 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三個數。

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<3的情況,而且這題注意用long。

推薦java相關文章教學:java開發入門

#

以上是java中如何計算最小公倍數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!