溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

java中求最小公倍數(shù)的方法

發(fā)布時(shí)間:2020-06-23 17:42:16 來(lái)源:億速云 閱讀:494 作者:元一 欄目:編程語(yǔ)言

這篇文章運(yùn)用簡(jiǎn)單易懂的例子給大家介紹java中求最小公倍數(shù)的方法,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

問(wèn)題描述:

已知一個(gè)正整數(shù)N,問(wèn)從1~N中任選出三個(gè)數(shù),他們的最小公倍數(shù)最大可以為多少。

輸入格式:

輸入一個(gè)正整數(shù)N。

輸出格式:

輸出一個(gè)整數(shù),表示你找到的最小公倍數(shù)。

樣例輸入:

9

樣例輸出:

504

數(shù)據(jù)規(guī)模與約定:

1 <= N <= 106

思路:

首先聲明幾個(gè)概念:

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

現(xiàn)在上升到三個(gè)數(shù)的最小公倍數(shù),要按照N的奇偶性分兩種情況:

一、當(dāng)n為奇數(shù):n、n-1、n-2的乘積

二、當(dāng)n為偶數(shù):n-1、n-2、n-3是一組極大解,如果答案要大于當(dāng)前值,只能是大于這3個(gè)數(shù)的乘積,那么只能把其中一個(gè)數(shù)變成n,并且三個(gè)數(shù)也要兩兩互質(zhì)。n、n-2、n-3偶偶奇明顯不互質(zhì);n、n-1、n-3偶奇奇;n、n-1、n-2偶奇偶明顯不互質(zhì)。

那么答案只能是n-1、n-2、n-3或者是n、n-1、n-3。但是n、n-3雖然是一個(gè)奇數(shù),一個(gè)偶數(shù),但是它們不連續(xù)可能不互質(zhì)例如5,6,3三個(gè)數(shù)。

n為奇數(shù):n、n-1、n-2

n為偶數(shù): n是3的倍數(shù) n-1、n-2、n-3

n不是3的倍數(shù) 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));
        }
    }


}

題目:輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。

程序分析:利用輾除法。

示例二:


package one;

import java.util.*;public class ProOne {

public static void main(String[] args)

{

int m=0,n=0,m1=0,n1=0;

int a;

Scanner scanner = new Scanner(System.in);

System.out.println("請(qǐng)輸dao入m的值:");

m=scanner.nextInt();

System.out.println("請(qǐng)輸入n的值:");

n=scanner.nextInt();

//將輸入的m和n值備份;

m1=m;

n1=n;

//取得兩個(gè)數(shù)相除的余數(shù);

a=m%n;

while(a!=0)

{

m1=n1;n1=a;a=m1%n1;

}

System.out.println("m,n的最大公約數(shù)為:"+n1);

//求兩個(gè)數(shù)字的最小公倍數(shù)的方法為:(兩個(gè)數(shù)的乘積)/(兩個(gè)數(shù)字的最大公約數(shù));

System.out.println("m,n兩個(gè)數(shù)的最小公倍數(shù)為:"+m*n/n1);

}

}

技巧:考慮N<3的情況,而且這道題注意用long。

關(guān)于java中求最小公倍數(shù)的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI