ピタゴラス数

30分プログラム、その268。ピタゴラス数 via Project Euler

ピタゴラスの三つ組(ピタゴラスの定理を満たす整数)とはa

そのままやったら、とても解けなかったので式を変形してみた。
2(a-10^3)(b-10^3)=10^6
これだと一瞬で解ける。すげぇ。

使い方

$ python problem9.py
a=200 b=375 c=425
31875000

ソースコード

#! /usr/bin/python
# -*- mode:python; coding:utf-8 -*-
#
# problem9.py -
#
# Copyright(C) 2008 by mzp
# Author: MIZUNO Hiroki / mzpppp at gmail dot com
# http://howdyworld.org
#
# Timestamp: 2008/03/22 20:24:44
#
# This program is free software; you can redistribute it and/or
# modify it under MIT Lincence.
#

def pythag1(n):
        return [(a,b,c) for a in xrange(1,n)
                        for b in xrange(1,n)
                        for c in xrange(1,n)
                        if a < b and b < c
                        if a+b+c==1000
                        if a*a + b*b == c*c][0]

def pythag2():
    for (a,b) in [(x,y) for x in xrange(1,1000) for y in xrange(1,1000) if x < y]:
        if 2*(a-1000)*(b-1000) == 10**6:
            c = 1000-a-b
            return (a,b,c)

all = a,b,c = pythag2()
print "a=%s b=%s c=%s" % all
print a*b*c