자바·파이썬·자바스크립트/파이썬 프로그래밍

유리수의 계산

바로이순간 2012. 1. 17. 16:29

def gcd(a,b):

    if b==0: return a

    return gcd(b, a-(a//b)*b)

def lcm(a, b):

    return a*b//gcd(a,b)

def reduce(a):

    if a[1]>1:

        g=gcd(a[0],a[1])

        a[0]=a[0]//g

        a[1]=a[1]//g

    return a

def add(a, b):

    x=[0,0]

    x[1]=a[1]*b[1]

    x[0]=a[0]*b[1]+a[1]*b[0]

    return reduce(x)

sum=[0,1]

for x in range(1,150000000):

    a=[1,2*x*(2*x+2)]

    sum=add(sum,a)

    if x%500000==0:

        print(a,x,sum)

print(a,x,sum)