언어/python

최대 공약수 최소 공부새 파이썬

파아랑새 2016. 5. 16. 16:29

#-*-coding: utf-8 -*-
# 두 수를 입력 받아서 최대공약수, 최소공배수를 구하고 종료
class gcdLcm:
    def __init__(self):
        self.Gcd_type_int = 0
        self.Lcm_type_int = 0
        self.val1_type_int = 0
        self.val2_type_int = 0
   
    def dataInput(self):
        self.val1_type_int = int(input("val1 input : "))
        self.val2_type_int = int(input("val2 input : "))
       
    def Greatest_Common_Divisor(self):
        tmp_large = 0
        tmp_small = 0
        tmp_q = 0
        tmp_remainder = 0
        print(self.val2_type_int, self.val1_type_int)
        if self.val1_type_int < self.val2_type_int:
            tmp_large = self.val2_type_int
            tmp_small = self.val1_type_int
        elif self.val1_type_int < self.val2_type_int:
            tmp_large = self.val1_type_int
            tmp_small = self.val2_type_int
        else:
            tmp_large = self.val1_type_int
            tmp_small = self.val2_type_int
        while True:       
            tmp_a = tmp_large//tmp_small
            tmp__remainder = tmp_large % tmp_small
            if tmp__remainder == 0:
                break
            tmp_large = tmp_small
            tmp_small = tmp__remainder
        self.Gcd_type_int = tmp_small
        print("{} 와 {} 의 최대 공약수(Greatest Common Divisor)는 {} 이다"
                .format(self.val2_type_int,self.val1_type_int,self.Gcd_type_int))
    def Least_Common_Divisor(self):
        self.Lcm_type_int += self.Gcd_type_int * (self.val1_type_int//self.Gcd_type_int )*(self.val2_type_int//self.Gcd_type_int)
        print("{} 와 {} 의 최소 공배수(Least Common Divisor)는 {} 이다"
                .format(self.val2_type_int,self.val1_type_int,self.Lcm_type_int))   
def main():
    stu = gcdLcm()
    stu.dataInput()
    stu.Greatest_Common_Divisor()
    stu.Least_Common_Divisor()
if __name__ == "__main__":
    main()