source code for "files/pe/pe_002.pl"
return to portfolio
- #!/usr/bin/perl
- # Matthew Owen
- # Project Euler #2
- use POSIX qw/ceil floor/;
- use bignum;
- sub round
- {
- my $n = shift;
- return int($n + .5*($n <=> 0));
- }
- sub fib
- {
- my $n = shift;
- my ($c1, $c2) = ((5+sqrt(5))/10, (-1+sqrt(5))/(2*sqrt(5)));
- my ($fi1,$fi2) = ((1+sqrt(5))/2, (1-sqrt(5))/2);
- return round($c1*$fi1**$n+$c2*$fi2**$n,1);
- }
- ($i, $f, $sum) = (0, 0, 0);
- while ($f < 4000000)
- {
- $sum += $f;
- $f = fib(2+$i*3);
- $i ++;
- print "Fib #", $i, " = ", $f, "\n";
- }
- print "The answer to Project Euler #2 is...\n\t", $sum;