【python初學者日記】讀入正整數n和m,檢查輸入合法性,若合法, 則:求取他們的最大公約數。(含輾轉相除法)
阿新 • • 發佈:2021-01-01
技術標籤:菜鳥啄米
讀入正整數n和m,檢查輸入合法性,若合法,則:求取他們的最大公約數。
問題分析
有兩種方法求取最大公約數:一個一個數字試,可以從小到大試,也可以用效率更高一點的從大往小試。另外一種方法就是用輾轉相除法來做。
程式碼實現
#讀入正整數n和m,檢查輸入合法性,若合法,
#則:求取他們的最大公約數。
import sys
n=int(input("請輸入正整數n "))
m=int(input("請輸入正整數m "))
a=min(n,m)
s=[]
if n<=0 or m<=0:
print ("你輸入的不是正整數,程式退出")
sys.exit(0)
#方法一:從小往大試數
'''
for i in range(1,a+1):
if n%i==0 and m%i==0:
s.append(i)
print(n,'和',m,'最大公約數是 ',max(s),sep='')
'''
#方法二:從大往小試數
'''
for i in range(a,1,-1):
if n%i==0 and m%i==0:
result=i
break
print(n,'和',m,'最大公約數是 ',result,sep='')
#'''
#方法三:輾轉相除法
if n<m:
n,m=m,n #重新賦值,讓n為輸入值最大的那個
r=n%m #定義r為n除以m所得的餘數
while r:#當r不為零時,迴圈以下內容
n=m
m=r
r=n%m
print(n,'和',m,'最大公約數是 ',m,sep='')
運結果如下: