最大公約數最小公倍數,多個數求法和逆求法

2021-09-13 11:50:29 字數 1663 閱讀 3202

多個數求法,求n個數的最大公約數和最小公倍數。

//求最大公約數函式

public

static

intdivisor

(int a,

int b)

while

(a%b!=0)

return b;

}//求最小公倍數函式

public

static

intmultiple

(int a,

int b)

public

static

void

main

(string[

] args)

system.out.

println

("最大公約數為:"

+gongyueshu)

; system.out.

println

("最小公倍數為:"

+gongbeishu)

;}

逆求法(hankson問題)

hanks博士是bt(bio-tech,生物技術)領域的知名專家,他的兒子名叫hankson。現在,剛剛放學回家的hankson正在思考乙個有趣的問題。

今天在課堂上,老師講解了如何求兩個正整數c1和c2的最大公約數和最小公倍數。現在hankson認為自己已經熟練地掌握了這些知識,他開始思考乙個「求公約數」和「求公倍數」之類問題的「逆問題」,這個問題是這樣的:已知正整數a0,a1,b0,b1,設某未知正整數x滿足:

1、 x和a0的最大公約數是a1;

2、 x和b0的最小公倍數是b1。

hankson的「逆問題」就是求出滿足條件的正整數x。但稍加思索之後,他發現這樣的x並不唯一,甚至可能不存在。因此他轉而開始考慮如何求解滿足條件的x的個數。請你幫助他程式設計求解這個問題。

輸入格式

輸入第一行為乙個正整數n,表示有n組輸入資料。接下來的n行每行一組輸入資料,為四個正整數a0,a1,b0,b1,每兩個整數之間用乙個空格隔開。輸入資料保證a0能被a1整除,b1能被b0整除。

輸出格式

輸出共n行。每組輸入資料的輸出結果佔一行,為乙個整數。

對於每組資料:若不存在這樣的x,請輸出0;

若存在這樣的x,請輸出滿足條件的x的個數;

樣例輸入

241 1 96 288

95 1 37 1776

樣例輸出62

public

static

void

main

(string[

] args)

for(

int i=

0;i) system.out.

println

(a[i]);

}//由數學知識得i必定小於等於它的最小公倍數b1

//計數函式

public

static

intjishu

(int a0,

int a1,

int b0,

int b1)

return count;

}//計算函式

public

static

intjisuan

(int a,

int b)

最大公約數 最小公倍數

求最大公約數最直接的辦法是從兩數中較小數與2之間的所有整數中乙個乙個的找。但這個方法有點浪費。有兩種有名的方法 1.輾轉相除法2.更相減損之術這兩種方法比較有名,而且現在人教版的高中數學中已經介紹了這兩種方法。下面這個是第2個,因為它只需要加減法就可以,效率高。int maxfactor unsig...

最小公倍數 最大公約數

求最小公倍數演算法 最小公倍數 兩整數的乘積 最大公約數 求最大公約數演算法 1 輾轉相除法 有兩整數a和 b a b得餘數c 若c 0,則 b即為兩數的最大公約數 若c 0,則 a b,b c,再回去執行 例如求27和 15的最大公約數過程為 27 15 餘12 15 12餘3 12 3餘0 因此...

最大公約數,最小公倍數

兩個數最大公約數 輾轉相除法 在數學中,輾轉相除法,又稱歐幾里得演算法,是求最大公約數的演算法。兩個整數的最大公約數是能夠同時整除它們的最大的正整數。輾轉相除法基於如下原理 兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。例如 用 a,b 來表示a和b的最大公約數。已知a,b,c為正整數...