您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹java中求最小公倍數的方法,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
問題描述:
已知一個正整數N,問從1~N中任選出三個數,他們的最小公倍數最大可以為多少。
輸入格式:
輸入一個正整數N。
輸出格式:
輸出一個整數,表示你找到的最小公倍數。
樣例輸入:
9
樣例輸出:
504
數據規模與約定:
1 <= N <= 106
思路:
首先聲明幾個概念:
兩個非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)); } } }
題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
程序分析:利用輾除法。
示例二:
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("請輸dao入m的值:");
m=scanner.nextInt();
System.out.println("請輸入n的值:");
n=scanner.nextInt();
//將輸入的m和n值備份;
m1=m;
n1=n;
//取得兩個數相除的余數;
a=m%n;
while(a!=0)
{
m1=n1;n1=a;a=m1%n1;
}
System.out.println("m,n的最大公約數為:"+n1);
//求兩個數字的最小公倍數的方法為:(兩個數的乘積)/(兩個數字的最大公約數);
System.out.println("m,n兩個數的最小公倍數為:"+m*n/n1);
}
}
技巧:考慮N<3的情況,而且這道題注意用long。
關于java中求最小公倍數的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。