python求两个数的最大公约数_python中求最大公约数的三种方法
在計(jì)算機(jī)編程中,代碼中會(huì)顯示出很多的數(shù)學(xué)算法,數(shù)學(xué)算法可以通過最小的付出,完成最多的工作。如果我們想要做一件事情,會(huì)規(guī)劃好行動(dòng)步驟,而算法,就是你所編程序的執(zhí)行步驟。算法是計(jì)算機(jī)程序的靈魂,是程序的精髓所在,程序執(zhí)行效率的高低直接取決于算法的優(yōu)劣。下面,小編就交給大家?guī)追N在python中求取最大公約數(shù)的方法。
幾個(gè)整數(shù)同時(shí)均能整除的整數(shù).如果一個(gè)整數(shù)同時(shí)是幾個(gè)整數(shù)的約數(shù),稱這個(gè)整數(shù)為它們的“公約數(shù)”;公約數(shù)中最大的稱為最大公約數(shù)
方法一:輾轉(zhuǎn)相除法
(1)比較兩數(shù),并使m>n
(2)將m作被除數(shù),n做除數(shù),相除后余數(shù)為r
(3)循環(huán)判斷r,若r==0,則n為最大公約數(shù),結(jié)束循環(huán)。若r !=0 ,執(zhí)行m=n,n=r;將m作被除數(shù),n做除數(shù),相除后余數(shù)為r
代碼:num1?=?int(input("請(qǐng)輸入第一個(gè)數(shù)字:"))
num2?=?int(input("請(qǐng)輸入第一個(gè)數(shù)字:"))
m?=?max(num1,?num2)
n?=?min(num1,?num2)
r?=?m?%?n
while?r?!=?0:
m?=?n
n?=?r
r?=?m?%?n
print(num1,?"和",?num2,?"的最大公約數(shù)為",?n)
方法二:輾轉(zhuǎn)相減法
(1) 如果p > q ,p = p - q
(2) 如果q > p ,q = q - p
(3) 假如p = q ,則 p或q 是最大公約數(shù)
(4) 如果p != q,則繼續(xù)繼續(xù)相減,直至p = q
代碼:def?fuc2(p,?q):
while?p!=q:
if?p>q:
p?=?p?-?q
else:
q?=?q?-?p
return?p
方法三:枚舉法
代碼:#枚舉法
def?fun3(a,b):
p?=?a*b
t?=?a???#將a值賦給t
while?t>0?:
if?a%t==0?and?b%t==0?:?#若a除以t的余數(shù)和b除以t的余數(shù)都為0時(shí),跳出循環(huán)
break
t=t-1???????????????????#t>0時(shí),每循環(huán)一次,t值減一
print("枚舉法得最大公約數(shù)為:",?t)?????????#當(dāng)跳出循環(huán)時(shí),輸出t值即為最大公約數(shù)
#用枚舉法求三個(gè)正整數(shù)的最大公約數(shù)
def?fun4(a,b,c):
p?=?a*b*c
if?a
min?=?a
else?:
min?=?b
if?min>c?:
min?=?c?????????????????????????????#找出輸入的a,b,c三個(gè)數(shù)中的最小的數(shù)賦給min
while?min>0?:
if?a%min==0?and?b%min==0?and?c%min==0?:??#若a除以的余數(shù)和b除以min的余數(shù)和c除以min都為0時(shí),跳出循環(huán)
break
min=min-1???????????????????????????????#>0時(shí),每循環(huán)一次,min值減一
print("枚舉法得三個(gè)數(shù)的最大公約數(shù)為:",?min)??#?當(dāng)跳出循環(huán)時(shí),輸出min值即為最大公約數(shù)
以上就是用python求取最大公約數(shù)的方法。計(jì)算機(jī)可以很好的幫助我們計(jì)算數(shù)學(xué)問題,如果你想提高編程水平,可以通過上述代碼求最好公約數(shù)練練手哦~
總結(jié)
以上是生活随笔為你收集整理的python求两个数的最大公约数_python中求最大公约数的三种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flink1.12-2021黑马 8 F
- 下一篇: 年化收益率超50%的“白马股基金”,幕后