天天看點

python 求最小公倍數和最大公約數

求兩值的最小公倍數

首先比較兩值大小,取兩值較大的數為max。

加入循環,max分别除以兩值,若餘數為0,則為最小公倍數。

求兩值的最大公約數

首先比較兩值大小,取兩值較小的數為min。

加入循環,min分别除以兩值,若餘數為0,則為最小公約數。

代碼:

class GreatestDivisor():

    def __init__(self,x,y):
        self.x = x 
        self.y = y
        
    #求最大公約數
    def gcd(self):
        if self.x < self.y:
            self.smallnum = self.x
        else:
            self.smallnum = self.y
        
        for i in range(1,self.smallnum+1):
            if self.x % i == 0 and self.y % i == 0:
            	print("最大公約數為:{}".format(self.smallnum))
                return i
                
    #求最小公倍數
    def lcm(self):
        if self.x > self.y:
            self.maxnum = self.x
        else:
            self.maxnum = self.y

        while True:
            if self.maxnum%self.x == 0 and self.maxnum%self.y == 0:
                print("最小公倍數為:{}".format(self.maxnum))
                return self.maxnum
            else:
                self.maxnum+=1
                
grest = GreatestDivisor(5,45)
grest.lcm(),grest.gcd()
           

運作結果:

最小公倍數為:45

最大公約數為:5