- #!/usr/bin/perl
-
- use strict;
- use warnings;
- use divisors;
- use POSIX qw/floor/;
-
- my $d = new divisors;
- my (@primes, @final);
-
- $d->make_sieve(1602);
-
- @primes = $d->get_primes(1000);
-
- sub primes_length {
- my $f = shift;
- my $k = 0;
- $k++ while ($d->is_prime($f->($k)));
- return $k;
- }
-
- my $count = 0;
- @final = (0, 0, 0);
-
- for my $b (@primes) {
- for my $p (@primes) {
- my ($a, $f, $length);
-
- $a = $p - $b - 1;
-
- next if $a < -999 || $a > 999;
-
- $f = sub { my $n = shift; $n**2+$a*$n+$b };
- $length = primes_length $f;
-
- @final = ($a, $b, $length) if $final[2] < $length;
- }
- }
-
- print "a=$final[0]\nb=$final[1]\nlength=$final[2]";