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

Problem 2

euler perl


2問目。問題を見たときに偶数の項のことを偶数番目の項と思ったんだけど、英語を
見ると even-valued termsになっているので値が偶数の項みたいです。

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

print "sum is ", p2(4000000), "\n"; # 4613732

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

  my $sum = 0;
  my $prev1 = 2;
  my $prev2 = 1;

  while(1){
    if($prev2 % 2 == 0){
      if($prev2 > $limit){
        return $sum;
      }
      else{
        $sum += $prev1;
      }
    }
    ($prev1, $prev2) = ($prev1 + $prev2, $prev1);
  }
}

あまりフィボナッチ数列を求めている感じではないけど、こんなところかな。
しかしリストの代入はなかなか便利な昨日ですね。Cだと一時変数を使わないとできないのにね。