python實現最小公倍數和最大公約數三種算法


方法1:輾轉相除法

有兩整數a和b:

 a%b得余數c

 若c=0,則b即為兩數的最大公約數

③ 若c≠0,則a=b,b=c,再回去執行①

例如求24和9的最大公約數過程為:

24÷9 余6

9÷6余3

6÷3余0

因此,3即為最大公約數

#coding: utf-8

n=int(raw_input('n='))
m=int(raw_input('m='))
a,b=n,m
p=0
temp=0
r=0

if (n<m):
    temp=n
    n=m
    m=temp

p=n*m
while (m!=0):
    r=n%m
    n=m
    m=r

print u'(%s,%s)最大公約數是: %s' % (str(a),str(b),str(n))
print u'(%s,%s)最小公倍數是: %s' % (str(a),str(b),str(p/n))

方法2:相減法

有兩整數a和b:

① 若a>b,則a=a-b

② 若a<b,則b=b-a

③ 若a=b,則a(或b)即為兩數的最大公約數

④ 若a≠b,則再回去執行①

例如求24和9的最大公約數過程為:

24-9=15( 15>9 ) 15-9=6( 9>6 )

9-6=3( 6>3 ) 6-3=3( 3==3 )

因此,3即為最大公約數

# coding: utf-8


a=int(raw_input('a='))
b=int(raw_input('b='))
n=a
m=b

while (a!=b):
    if a>b:
        a=a-b
    else:
        b=b-a
print u'(%s,%s)的最大公約數是: %s' % (n,m,a)
print u'(%s,%s)的最小公倍數是: %s' % (n,m,m*n/a)

方法3:窮舉法

有兩整數a和b:

① i=1

② 若a,b能同時被i整除,則t=i

③ i++

④ 若 i <= a(或b),則再回去執行②

⑤ 若 i > a(或b),則t即為最大公約數,結束

改進的算法:

① i= a(或b)

② 若a,b能同時被i整除,則i即為最大公約數,結束

③ i--,再回去執行②

# coding: utf-8

a=int(raw_input('a='))
b=int(raw_input('b='))
n=a
m=b

t=a
while (t>0):
    if (a % t == 0 and b % t == 0):
        break
    t=t-1

print u'(%s,%s)的最大公約數是: %s' % (n,m,t)
print u'(%s,%s)的最小公倍數是: %s' % (n,m,m*n/t)

 

三個算法得出的結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM