很簡單,直接用輾轉(zhuǎn)相除法判斷這兩個(gè)數(shù)的最大公因數(shù)是否為1就好了
為南溪等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及南溪網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、網(wǎng)站設(shè)計(jì)、南溪網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
def gcd(a, b):
if a b:
return gcd(b, a)
while a % b != 0:
temp = b
b = a % b
a = temp
return b
def main():
a = 15
b = 10
if gcd(a, b) == 1:
print('互質(zhì)')
else:
print('不互質(zhì)')
方案如下: 將另一個(gè)py做成一個(gè)包,或者直接和調(diào)用文件放在同一個(gè)目錄下; 在調(diào)用者文件頭引入:from py名字 import *; 這樣就可以使用另一個(gè)py文件的所有函數(shù)了。
# 輾轉(zhuǎn)相除法求最大公約數(shù)
def gcd(a, b):
if a b:
a, b = b, a
while a % b != 0:
a, b = b, a % b
return b
gcd(21,49)
程序縮進(jìn)如圖所示
提到最大公約數(shù),那么就不得不說什么是公約數(shù),它是一個(gè)能被若干個(gè)整數(shù)同時(shí)均整除的整數(shù)。如果一個(gè)整數(shù)同時(shí)是幾個(gè)整數(shù)的約數(shù),稱這個(gè)整數(shù)為它們的“公約數(shù)”;公約數(shù)中最大的稱為最大公約數(shù)。對(duì)任意的若干個(gè)正整數(shù),1總是它們的公因數(shù)。
舉個(gè)例子:30和40的公約數(shù)有:1,2,5,10,那么10是這幾個(gè)里面最大的,就是30和40的最大公約數(shù)。
python求最大公約數(shù)
1.python求最大公約數(shù)設(shè)計(jì)思路
給定兩個(gè)數(shù),從1開始嘗試,步長為1逐漸遞增,為了優(yōu)化算法,只需要循環(huán)到兩個(gè)數(shù)中最小的那個(gè)數(shù)就可以。所以,第一步就是計(jì)算出兩個(gè)數(shù)中最小的數(shù),然后利用for循環(huán)從1到最小的那個(gè)數(shù)進(jìn)行枚舉,如果該數(shù)能夠同時(shí)被兩個(gè)數(shù)整除,則記錄下來,直到循環(huán)結(jié)束,最后,最大的這個(gè)就是最大公約數(shù)。
特別注意:這里會(huì)用到range函數(shù),range(0,5)的結(jié)果為0,1,2,3,4注意是沒有5的,因此在本例中循環(huán)時(shí)應(yīng)該是從1到最小的那個(gè)數(shù)+1才對(duì)。
2.最大公約數(shù)的python實(shí)現(xiàn)
打開百度APP,查看更多高清圖片
說明:在上面的代碼中,我們會(huì)用到自定義函數(shù)的定義方法:def ,兩個(gè)數(shù)的最小數(shù)的判斷方法,for循環(huán)和枚舉取值,整除取余,輸入輸出等內(nèi)置函數(shù)。
最后的輸出語句已經(jīng)限定了函數(shù)名是gcd
函數(shù)里的算法是求最大公約數(shù)的輾轉(zhuǎn)相除法。輾轉(zhuǎn)相除法是一個(gè)循環(huán)處理過程,所以第二個(gè)是while
同理,最后return的應(yīng)該是n
def gcd(m,n):
r=m%n
while r:
m=n
n=r
r=m%n
else:
return n
gcd 是用來求做大公約數(shù)的,例如:
from?fractions?import?gcd
gcd(9,6)
結(jié)果是3