1. 程式人生 > 其它 >【python初學者日記】讀入正整數n和m,檢查輸入合法性,若合法, 則:求取他們的最大公約數。(含輾轉相除法)

【python初學者日記】讀入正整數n和m,檢查輸入合法性,若合法, 則:求取他們的最大公約數。(含輾轉相除法)

技術標籤:菜鳥啄米

讀入正整數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='')

運結果如下:
在這裡插入圖片描述