Skip to content

Instantly share code, notes, and snippets.

@davidbella
Created November 4, 2012 22:59
Show Gist options
  • Save davidbella/4014229 to your computer and use it in GitHub Desktop.
Save davidbella/4014229 to your computer and use it in GitHub Desktop.
CueUp/greplin Level 2 - Fibonacci Primes
use strict;
use warnings;
my $lowerBound = shift;
my ($oldValue, $value) = fib(1, 1);
while ($value < $lowerBound ? 1 : 0 || !isPrime($value)) {
print $oldValue, ", ", $value, "\n";
($oldValue, $value) = fib($oldValue, $value);
}
my $array = primeDivisors($value + 1);
my $sum = eval join '+', @$array;
print $sum, "\n";
sub primeDivisors {
my $number = shift;
my @primeDivisors;
for (my $i = 2; $i < $number; $i++) {
if (isPrime($i) && int($number / $i) == $number / $i) {
push @primeDivisors, $i;
}
}
return \@primeDivisors;
}
sub fib {
my $firstNum = shift;
my $secondNum = shift;
return ($secondNum, $firstNum + $secondNum);
}
sub isPrime {
my $number = shift;
for (my $i = 2; $i <= sqrt($number); $i++) {
if (int($number / $i) == $number / $i) {
return 0;
}
}
return 1;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment