在求解兩個數的小公倍數的方法時,假設兩個正整數分別為a、b的最小公倍數為d,最大公約數為c。存在這樣的關係d=a*b/c。通過這個關係式,我們可以快速的求出三個正整數的最小公倍數。
def divisor(a,b):
c = a%b
while c>0:
a=bb=c
c=a%b
return b
x1 = input("input1:")
x2 = input("input2:")
x3 = input("input3:")
x0 = x1*x2/divisor(x1,x2)
x0 = x0*x3/divisor(x0,x3)
print "the least multiple is:%d"%x0
通過函式divisor求解兩個數的最大公約數,然後進行兩次求解最小公倍數即可知道三個正整數x1、x2、x3的最小公倍數。
其實可以通過divisor1函式求兩個數的最小公倍數,再進行巢狀呼叫實現三個數的最小公倍數。
divisor1函式如下:
def divisor1(a,b):
a1 = a
b1 = b
c = a%b
while c>0:
a=bb=c
c=a%b
return a1*b1/b
巢狀過程如下:
x0 = divisor1(divisor1(x1,x2),x3)
可以求得三個正整數的最小公倍數。
tip: a-bx=c,可知當乙個數為a、b的公約數時,同時也是c的約數。
通過最大公約數即可得到最小公倍數的求解。
def min_multi(a,b):
return a*b/divisor1(a,b)
求解質數的函式:
def isprime(n):
for i in range(2,int(n**0.5)+1):
if n%i==0:
return false
return true
求兩個正整數的最大公約數
基本要求 從鍵盤輸入兩個整數,輸出兩個整數的最大公約數。用c或c 語言實現程式解決問題。1.程式風格良好 使用自定義注釋模板 2.使用三種演算法解決問題 3.提供友好的輸入輸出,並進行輸入資料的正確性驗證 方法一 窮舉法 窮舉法,顧名思義,就是乙個乙個試,即遍歷兩個整數中較小的數到零的所有數,如果能...
求兩個正整數的最大公約數
求兩個正整數的最大公約數問題 版本 v1.0 主要功能 1 輾轉相除法 a b得餘數c 若c 0,則b即為兩數的最大公約數,結束 若c 0,則a b,b c,再回去執行 2 相減法 兩整數a和b 若a b,則a a b 若a b,則a 或b 即為兩數的最大公約數,結束 若a b,則再回去執行 3 窮...
求兩個正整數的最大公約數Python版
求兩個數的最大公約數我分別採用輾轉相除法,輾轉相減法,列舉法來求得。最小公倍數就是兩個數之積除以最大公約數的結果。1.將兩整數求餘 a b x 2.如果x 0 則b為最大公約數 3.如果x 0,則 a b b x 繼續從1開始執行 4.也就是說該迴圈的是否繼續的判斷條件就是x是否為0 輾轉相除法 d...