読者です 読者をやめる 読者になる 読者になる

Problem9

euler perl


9問目。三平方の定理を満たす a, b, cの合計が 1000になる唯一組み合わせを
見つけろという問題。wikipediaによると一応定理はあるみたいですね。要検討。
a,b,cの順番で数字が大きくないといけないので、aは333未満, bは500未満ぐらいに
なるんですかね。

#!/usr/bin/perl
use strict;
use warnings;

my ($a, $b, $c) = p9(1000);
print "$a + $b + $c = 1000\n"; # 200 + 375 + 425 = 1000

sub p9
{
  my ($limit) = @_;

  for my $i (3..333){
    my $b_limit = int(($limit - $i) / 2);
    for my $j (($i+1)..$b_limit){
      my $k = $limit - $i - $j;
      return ($i, $j, $k) if $k ** 2 == $i ** 2 + $j ** 2;
    }
  }
}