40812


Aizu
Onlineジャッジの[最大公約数と最小公倍数の問題](http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0005&lang=jp)をPython3で解いていますが、「Runtime
Error」（はやく言えばスクリプト言語単位でのエラーですね）と出てしまいます。  
どこに「Runtime Error」の原因があるのか教えてくれないでしょうか。

[code]

    class GCD():
        def __init__(self,a,b):
            self.a = a
            self.b = b
    
        def swap(self):
            temp = self.a
            self.a = self.b
            self.b = temp
    
        def gcd(self):
            if self.b < self.a:
                self.swap()
    
            temp = self.b % self.a
    
            if temp == 0:
                ans = self.a
                return ans
    
            ans = self.b % temp
    
            return ans
    
    
        def lcm(self):
            gcd = self.gcd()
            temp = self.a * self.b
            ans = temp // gcd
            return gcd,ans
    
        def print(self):
            num = self.lcm()
            print("{0} {1}".format(num[0],num[1]))
    
    def main():
        data = []
    
        while 1:
            try:
                n = input().split()
    
                a = int(n[0])
                b = int(n[1])
    
                data.append(GCD(a, b))
    
            except EOFError:
                break
    
        for array in data:
            array.print()
    
    if __name__ == "__main__":
        main()
    
[/code]


CC BY-SA 3.0
2018-01-07T05:24:13.627
40790
2018-01-08T05:54:54.800
2018-01-08T05:45:09.027
26886
26886
question
python python3
PythonでAizu Onlineジャッジの最大公約数と最小公倍数の問題でRuntime Errorと出る。


色々と回答を出しているみたいですが、Kenji
Noguchiさんの意見を参考にして、コードを以下のように変更したら「Accept」（正解です）になりました。みなさま、どうもありがとうございました！！

[code]

    class GCD():
        def __init__(self,a,b):
            self.a = a
            self.b = b
    
        def gcd(self):
            if self.a < self.b:
                self.a, self.b = self.b, self.a
            while self.b:
                self.a, self.b= self.b, self.a % self.b
    
            return self.a
    
        def print(self):
            lcm = self.a * self.b // self.gcd()
            print(self.gcd(), lcm)
    
    def main():
        data =[]
    
        while 1:
            try:
                n = input().split()
    
                a = int(n[0])
                b = int(n[1])
    
                data.append(GCD(a, b))
    
            except EOFError:
                break
    
        for array in data:
            array.print()
    
    if __name__ == "__main__":
        main()
    
[/code]


CC BY-SA 3.0
2018-01-08T05:54:54.800
40812
2018-01-08T05:54:54.800
26886
40790
answer