Q75

来源:互联网 发布:java程序执行入口 编辑:程序博客网 时间:2024/05/19 01:06

import tools
import math
clock = tools.clock()
clock.start()
MAX = 1500000
dict = {}

#1, m2 - n2 = a 2. 2mn = b 3. m2 + n2 =c 4.a+b+c=L 5.a+b>c 6.a+c>b 7.c+b>a  1+3;4,5,6,7=> m<sqrt(L/2) | 1 => n<m
sqrt_L = int(math.sqrt(MAX/2))
not_qualify = False
for m in range(2,sqrt_L+1,1):
    for n in range(1,m+1,1):
        if (m+n)%2 != 0 and tools.gcd(m,n)==1: #Pythagorean's right angle
            m2 = m*m
            n2 = n*n
            a =  m2- n2
            b = 2*m*n
            c = m2 + n2
            sum = a+b+c
            if sum <= MAX:
                if dict.get(sum) == None:
                    dict[sum] = 1
                else:
                    dict[sum] += 1
            sum += a+b+c
            while sum <= MAX:
                if dict.get(sum) == None:
                    dict[sum] = 1
                else:
                    dict[sum]+=1
                sum += a+b+c
answer=0
for key in dict:
    if dict[key] == 1:
        answer+=1
print answer

原创粉丝点击