Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- use warnings;
- use strict;
- use Math::BigFloat lib=>"GMP";
- use Math::GMPz;
- use Math::Prime::Util qw/:all/;
- use feature ':5.10';
- use File::Slurp;
- my $prim=47;
- my @crt = (2552748177891450,4525099353657960,4890645049862880,6157389981878520,10854052306322600,8195665938985140,16650825898473700);
- my $beg = shift || 1;
- my $end = shift || 3000000000;
- my $fact = Math::GMPz->new(primorial($prim));
- my $minustarget = 200;
- my $target=150;
- my $filename='primegaps-perl.txt';
- my $addi=0;
- my $line="";
- my $meritrec=0;
- my $gaprec=0;
- my $counter=-1;
- foreach my $i ($beg .. $end)
- {
- $counter=$counter+1;
- if ($counter == 50000) {
- print "$i\n";
- $counter=0;
- }
- my $fact_i = $fact * $i;
- foreach my $a (@crt)
- {
- my $num = $fact_i+$a+855;
- my $start = prev_prime($num);
- my $startpoint = $num-$start;
- if ($startpoint> $minustarget)
- {
- my $end = next_prime($num);
- my $gap = $end - $start;
- my $endpoint = $end-$num;
- if ($gap> $target)
- {
- open(my $fh, '>>', $filename) or die "Could not open file '$filename' $!";
- my $merit = merit($start, $gap);
- if ($merit <15 && $gap>$target) { $target=$gap; print "nouvel écart : $target\n";}
- print "$i $a $startpoint $endpoint $gap $merit\n";
- my $addi=$a+855;
- if ($merit > $meritrec || $merit > 21.5 ){
- $meritrec=$merit ; say "nouveau record de merite : $meritrec";
- $line= "$i*$prim#+$addi-$startpoint et l'ecart est de $gap et a un merite de $merit";
- say $fh "$line";
- }
- if ($gap > $gaprec) {
- $gaprec=$gap; say "nouveau record d 'ecart : $gaprec";
- }
- else {
- $line= "$i*$prim#+$addi-$startpoint et l'ecart est de $gap";
- }
- print "$line\n";
- close $fh;
- #} else {
- # print "merite pas assez gros\n";
- # }
- }
- }
- }
- }
- sub merit {
- my($n, $gap) = @_;
- my $fgap = Math::BigFloat->new("$gap");
- my $fn = Math::BigFloat->new("$n");
- return sprintf("%.6lf", $fgap / log($fn));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement