Project Euler Problem 039
http://projecteuler.net/index.php?section=problems&id=39
http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2039
辺の長さが{a,b,c}と整数の3つ組である直角三角形を考え, その周囲の長さをpとする. p = 120のときには3つの解が存在する: {20,48,52}, {24,45,51}, {30,40,50} p ≦ 1000 で解の数が最大になる p を求めよ.
いまいち
import datetime def f(p): cnt = 0 for a in xrange(1,p/3): aa = a*a for b in xrange(a+1,(p-a-1)/2+1): c = p - a - b if aa + b*b == c*c: cnt += 1 return cnt def euler039(): maxp = 0 maxv = 0 for p in xrange(6, 1001, 2): v = f(p) if v > maxv: maxp = p maxv = v print '', maxp, maxv print maxp, maxv begin = datetime.datetime.now() euler039() end = datetime.datetime.now() print end - begin
答え: 840
実行時間: 5.044749秒くらい