python求最大公約數(shù)和最小公倍數(shù)
創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目做網(wǎng)站、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元上虞做網(wǎng)站,已為上家服務(wù),為上虞各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
定義一個函數(shù)
def hcf(x, y):
該函數(shù)返回兩個數(shù)的最大公約數(shù)
# 獲取最小值
if x y:
smaller = y
else:
smaller = x
for i in range(1,smaller + 1):
if((x % i == 0) and (y % i == 0)):
hcf = i
return hcf
# 用戶輸入兩個數(shù)字
num1 = int(input("輸入第一個數(shù)字: "))
num2 = int(input("輸入第二個數(shù)字: "))
print( num1,"和", num2,"的最大公約數(shù)為", hcf(num1, num2))
求兩個數(shù)的最小公倍數(shù)的算法有很多種,效率最高的一種是先計(jì)算出它們的最大公約數(shù)。
采用輾轉(zhuǎn)相除法,可以求出兩個正整數(shù)的最大公約數(shù)。先保存a和b的數(shù)值的副本,求出a÷b的余數(shù),如果不等于零,就令a=b,b等于這一次的余數(shù)。
重復(fù)做上述的除法零,直到余數(shù)為0的時候,B的值就是一開始兩個數(shù)的最大公約數(shù)。這時初始的兩數(shù)乘積除以最大公約數(shù)就是兩個數(shù)的最小公倍數(shù)。
提到最大公約數(shù),那么就不得不說什么是公約數(shù),它是一個能被若干個整數(shù)同時均整除的整數(shù)。如果一個整數(shù)同時是幾個整數(shù)的約數(shù),稱這個整數(shù)為它們的“公約數(shù)”;公約數(shù)中最大的稱為最大公約數(shù)。對任意的若干個正整數(shù),1總是它們的公因數(shù)。
舉個例子:30和40的公約數(shù)有:1,2,5,10,那么10是這幾個里面最大的,就是30和40的最大公約數(shù)。
python求最大公約數(shù)
1.python求最大公約數(shù)設(shè)計(jì)思路
給定兩個數(shù),從1開始嘗試,步長為1逐漸遞增,為了優(yōu)化算法,只需要循環(huán)到兩個數(shù)中最小的那個數(shù)就可以。所以,第一步就是計(jì)算出兩個數(shù)中最小的數(shù),然后利用for循環(huán)從1到最小的那個數(shù)進(jìn)行枚舉,如果該數(shù)能夠同時被兩個數(shù)整除,則記錄下來,直到循環(huán)結(jié)束,最后,最大的這個就是最大公約數(shù)。
特別注意:這里會用到range函數(shù),range(0,5)的結(jié)果為0,1,2,3,4注意是沒有5的,因此在本例中循環(huán)時應(yīng)該是從1到最小的那個數(shù)+1才對。
2.最大公約數(shù)的python實(shí)現(xiàn)
打開百度APP,查看更多高清圖片
說明:在上面的代碼中,我們會用到自定義函數(shù)的定義方法:def ,兩個數(shù)的最小數(shù)的判斷方法,for循環(huán)和枚舉取值,整除取余,輸入輸出等內(nèi)置函數(shù)。
提到最大公約數(shù),那么就不得不說什么是公約數(shù),它是一個能被若干個整數(shù)同時均整除的整數(shù)。如果一個整數(shù)同時是幾個整數(shù)的約數(shù),稱這個整數(shù)為它們的“公約數(shù)”;公約數(shù)中最大的稱為最大公約數(shù)。對任意的若干個正整數(shù),1總是它們的公因數(shù)。
舉個例子:30和40的公約數(shù)有:1,2,5,10,那么10是這幾個里面最大的,就是30和40的最大公約數(shù)。
python求最大公約數(shù)
1.python求最大公約數(shù)設(shè)計(jì)思路
給定兩個數(shù),從1開始嘗試,步長為1逐漸遞增,為了優(yōu)化算法,只需要循環(huán)到兩個數(shù)中最小的那個數(shù)就可以。所以,第一步就是計(jì)算出兩個數(shù)中最小的數(shù),然后利用for循環(huán)從1到最小的那個數(shù)進(jìn)行枚舉,如果該數(shù)能夠同時被兩個數(shù)整除,則記錄下來,直到循環(huán)結(jié)束,最后,最大的這個就是最大公約數(shù)。
特別注意:這里會用到range函數(shù),range(0,5)的結(jié)果為0,1,2,3,4注意是沒有5的,因此在本例中循環(huán)時應(yīng)該是從1到最小的那個數(shù)+1才對。
2.最大公約數(shù)的python實(shí)現(xiàn)
打開百度APP,查看更多高清圖片
說明:在上面的代碼中,我們會用到自定義函數(shù)的定義方法:def ,兩個數(shù)的最小數(shù)的判斷方法,for循環(huán)和枚舉取值,整除取余,輸入輸出等內(nèi)置函數(shù)。
一、求最大公約數(shù)算法:
1. 整數(shù)A對整數(shù)B進(jìn)行取整, 余數(shù)用整數(shù)C來表示 舉例: C = A % B
2. 如果C等于0,則C就是整數(shù)A和整數(shù)B的最大公約數(shù)
3. 如果C不等于0, 將B賦值給A, 將C賦值給B ,然后進(jìn)行 1, 2 兩步,直到余數(shù)為0, 則可以得知最大公約數(shù)
二、根據(jù)算法,實(shí)現(xiàn)Python程序
程序輸出結(jié)果:
更多學(xué)習(xí)課程以及資料 加Q群 313074041 領(lǐng)取
# 定義一個函數(shù)
def hcf(x, y):
"""該函數(shù)返回兩個數(shù)的最大公約數(shù)"""
# 獲取最小值
if x y:
smaller = y
else:
smaller = x
for i in range(1,smaller + 1):
if((x % i == 0) and (y % i == 0)):
hcf = i
return hcf
# 用戶輸入兩個數(shù)字
num1 = int(input("輸入第一個數(shù)字: "))
num2 = int(input("輸入第二個數(shù)字: "))
print( num1,"和", num2,"的最大公約數(shù)為", hcf(num1, num2))
函數(shù)定義:
Common_multiple(number1, number2):? # 求兩個數(shù)的最小公倍數(shù)
Maximum_common_divisor(*number):? # 求任意多個數(shù)的最小公倍數(shù)
Minimum_common_multiple(*number):? # 求任意多個數(shù)的最大公因數(shù)
程序縮進(jìn)如下:
程序縮進(jìn)
運(yùn)行結(jié)果展示:
運(yùn)行結(jié)果
函數(shù)具體代碼:縮進(jìn)版本點(diǎn)擊自取
def Common_multiple(number1, number2):? # 求兩個數(shù)的最小公倍數(shù)
while number1 % number2 != 0:
number1, number2 = number2, (number1 % number2)
return number2
def Maximum_common_divisor(*number):? # 求任意多個數(shù)的最小公倍數(shù)
while len(number) 1:
number = [Common_multiple(number[i], number[i+1]) for i in range(0, len(number)-1)]
return number[0]
def Minimum_common_multiple(*number):? # 求任意多個數(shù)的最大公因數(shù)
while len(number) 1:
number = [number[i]*number[i+1]/Common_multiple(number[i], number[i+1]) for i in range(0, len(number)-1)]
return number[0]
分享題目:python中公約數(shù)函數(shù) 最大公約數(shù)python語言算法
網(wǎng)址分享:http://jinyejixie.com/article42/dochjec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、品牌網(wǎng)站建設(shè)、、微信公眾號、用戶體驗(yàn)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)