導航:首頁 > 源碼編譯 > 最小公倍數演算法java

最小公倍數演算法java

發布時間:2022-05-16 08:32:14

java 計算最小公倍數的問題

汗,這是歐幾里得演算法求最大公約數..

int r=m%n;
while(r!=0)
{ m=n;
n=r;
r=m%n;
}

這是歐幾里得演算法的實現...

歐幾里德演算法又稱輾轉相除法,用於計算兩個整數a,b的最大公約數。其計算原理依賴於下面的定理:
定理:gcd(a,b) = gcd(b,a mod b)
證明:a可以表示成a = kb + r,則r = a mod b
假設d是a,b的一個公約數,則有
d|a, d|b,而r = a - kb,因此d|r
因此d是(b,a mod b)的公約數
假設d 是(b,a mod b)的公約數,則
d | b , d |r ,但是a = kb +r
因此d也是(a,b)的公約數
因此(a,b)和(b,a mod b)的公約數是一樣的,其最大公約數也必然相等,得證

② java求最小公倍數和最大公約數

/**
* 最大公約數
* 更相減損法:也叫更相減損術
* ??? 第一步:任意給定兩個正整數;判斷它們是否都是偶數。若是,則用2約簡;若不是則執行第二步。
* 第二步:以較大的數減較小的數,接著把所得的差與較小的數比較,並以大數減小數。繼續這個操作,直到所得的減數和差相等為止。
* @param a
* @param b
* @return
*/
public static int gongyue( int a, int b){
if(a == b){
return a;
} else{
return gongyue(abs (a-b),min(a,b));
}

}
/**
* 最大公約數
* 輾轉相除法:輾轉相除法是求兩個自然數的最大公約數的一種方法,也叫歐幾里德演算法.
* 例如,求(319,377):
* ∵ 377÷319=1(餘58)
* ∴(377,319)=(319,58);
* ∵ 319÷58=5(餘29),
* ∵ 58÷29=2(餘0),
* ∴ (58,29)= 29;
* ∴ (319,377)=29.
* @param a
* @param b
* @return
*/
public static int gongyue1( int a, int b){
if(b!=0){
return gongyue1(b,a%b);
} else{
return a;
}
}

/**
* 最小公倍數
* 兩個數乘積除去最大公約數即可
* @param a
* @param b
* @return
*/
public static int gongbei( int a, int b){
return a*b/gongyue(a,b);
}

public static int abs(int i){
return i>=0?i:-i;
}
public static int min(int a,int b){
return a<b?a:b;
}

③ java編程出三個數中的最小公倍數

你好,這是代碼


LeastCommonMultipleTest.java

{
publicstaticvoidmain(String[]args){
//三個數
inta=7,b=9,c=11;
//最小公倍數
intnumber=0;
//從0開始判斷,無上限(最大可能是三個數字的乘積)
while(!isCommonMultipleNum(number,newint[]{a,b,c})){
//從0開始判斷,不是公倍數就+1
number++;
}
System.out.printf("最小公倍數是:"+number);
}

/**
*判斷某數是否為幾個數字的公倍數
*
*@paramnumber
*要判斷是否為公倍數的數字
*@paramarr
*數字數組
*@return判斷結果,是公倍數返回true,不是返回false
*/
(intnum,int[]arr){
//循環判斷每一個數字
for(inti=0;i<arr.length;i++){
intcurrent=arr[i];
if(num<current||num%current!=0){
returnfalse;
}
}
returntrue;
}
}

④ 如何用java寫一個求出最小公倍數的程序

int minMultiple(int a, int b) {
int r = a, s = a, t = b;
if (a < b) {
r = a;
a = b;
b = r;
}
while (r != 0) {
r = a % b;
a = b;
b = r;
}
return s * t / a;
}
從演算法上講絕對優於樓上的樓上

⑤ java 求最大公約數,最小公倍數

import java.util.Scanner;
public class C{
public static int fun1(int a1,int b1){
int c;
c=a1%b1;
while (c>0)
{a1=b1;
b1=c;
c=a1%b1;
//return b1;
}
return b1; //把return寫在這里;
}
public static void main(String[] args) {
int a,b,temp;
int m;
Scanner in=new Scanner(System.in);
a=in.nextInt();
b=in.nextInt();
if(a<b)
{temp=a;a=b;b=temp;
}
m=fun1(a,b);
System.out.println("最大公約數為:"+m);
System.out.println("最小公倍數為:"+(a*b)/m);
}
}

⑥ 求JAVA最小公倍數的代碼

package one;
import java.util.*;public class ProOne {
//題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
//程序分析:利用輾除法。
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("請輸入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);
}
}//我以前做的,你看看吧!

⑦ 簡單的java程序 最小公倍數

packagecom.liu.test;

importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;

publicclassTest{

publicstaticintdoMax(inta,intb){
if(b==0)
returna;
else
returndoMax(b,a%b);
}

publicstaticintdoMin(inta,intb){

return(a*b)/doMax(a,b);
}

publicstaticintBubbleSort(inta[]){

for(inti=a.length-1;i>0;i--){
booleanflag=false;
for(intj=0;j<i;j++){
if(a[j+1]<a[j]){
inttemp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=true;
}
}
if(!flag){
break;
}
}
returna[a.length-1];
}

publicstaticvoidmain(String[]args)throwsNumberFormatException,IOException{

while(true){
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
System.out.println("輸入一個正整數:");
inttarget=Integer.parseInt(br.readLine());

if(target<1||target>106){
System.out.println("輸入必須在1到106之間");
}else{
inta[]=newint[target];
for(inti=1;i<target;i++){
for(intj=i+1;j<target-1;j++){
a[i-1]=doMin(i,j);
}
}
System.out.println(BubbleSort(a));
break;
}
}
}
}

⑧ 求最小公倍數的java method的code

public int leastCommonMultiple(int value1, int value2) {
int flag = value1;
int temp1 = value1;
int temp2 = value2;
if (value1 < value2) {
flag = value1;
value1 = value2;
value2 = flag;
}
while (flag != 0) {
flag = value1 % value2;
value1 = value2;
value2 = flag;
}
return temp1 * temp2 / value1;
}

⑨ 用Java 求兩個數的最小公倍數

//求最大公約數

publicstaticintcommonDivisor(intn,intm){

//輾轉相除是用大的除以小的。如果nwhile(n%m!=0){

inttemp=n%m;

n=m;

m=temp;

}

returnm;

}

//求最小公倍數

publicstaticintcommonMultiple(intn,intm){

returnn*m/commonDivisor(n,m);//兩數相乘除以最大公約數

}

⑩ java 如何得到多個數據的最小公倍數啊

這個JDK裡面貌似真沒有,不過你可以用這個:
http://blog.163.com/zhao_8420001/blog/static/50370196201243133828127/

閱讀全文

與最小公倍數演算法java相關的資料

熱點內容
ubuntu壓縮zip 瀏覽:2
vigenere演算法的方法是什麼 瀏覽:666
pdf保護破解 瀏覽:341
仿微信聊天系統源碼廣州公司 瀏覽:106
怎麼查看我的世界伺服器日誌 瀏覽:430
怎麼從程序員走到成功 瀏覽:824
把軟體放入文件夾中如何移出 瀏覽:209
紅包源碼企業即時聊天軟體 瀏覽:581
xp安裝python 瀏覽:10
西門子參數編程讀取半徑值 瀏覽:403
洗首飾解壓小視頻 瀏覽:966
01背包問題的演算法解決 瀏覽:373
sd卡放哪個文件夾 瀏覽:301
解釋器模式java 瀏覽:104
android垂直自動滾動條 瀏覽:153
計算器java小程序 瀏覽:27
java的簡稱 瀏覽:68
雲伺服器公網ip地址 瀏覽:581
php對資料庫操作 瀏覽:237
java爬圖片 瀏覽:866