12
12
use 5.036;
13
13
use ntheory qw( :all) ;
14
14
use List::Util qw( all) ;
15
- use Time::HiRes qw ( time) ;
15
+ use Time::HiRes qw( time) ;
16
16
17
17
sub isrem ($m , $p , $terms , $alpha ) {
18
18
@@ -29,7 +29,7 @@ ($p, $terms, $alpha)
29
29
grep { isrem($_ , $p , $terms , $alpha ) } (0 .. $p - 1);
30
30
}
31
31
32
- sub remainders_for_primes ($n , $ primes , $terms , $alpha ) {
32
+ sub remainders_for_primes ($primes , $terms , $alpha ) {
33
33
34
34
my $res = [[0, 1]];
35
35
@@ -54,17 +54,6 @@ ($n, $primes, $terms, $alpha)
54
54
sort { $a <=> $b } map { $_ -> [0] } @$res ;
55
55
}
56
56
57
- sub is ($m , $n ) {
58
-
59
- is_prime($m + 1) || return ;
60
-
61
- foreach my $k (2 .. $n ) {
62
- is_prime($k * $m + 1) || return ;
63
- }
64
-
65
- return 1;
66
- }
67
-
68
57
sub deltas ($integers ) {
69
58
70
59
my @deltas ;
@@ -78,11 +67,11 @@ ($integers)
78
67
return \@deltas ;
79
68
}
80
69
81
- sub linear_form_primes ($n , $ terms , $alpha = 1, $maxp = 3 * $n ) {
70
+ sub linear_form_primes ($terms , $alpha = 1, $maxp = 3 * scalar ( @$terms ) ) {
82
71
83
72
my @primes = @{primes($maxp )};
84
73
85
- my @r = remainders_for_primes($n , \@primes , $terms , $alpha );
74
+ my @r = remainders_for_primes(\@primes , $terms , $alpha );
86
75
my @d = @{deltas(\@r )};
87
76
my $s = vecprod(@primes );
88
77
@@ -96,6 +85,7 @@ ($n, $terms, $alpha = 1, $maxp = 3 * $n)
96
85
my $d_len = scalar (@d );
97
86
my $t0 = time ;
98
87
my $prev_m = $m ;
88
+ my $n = scalar (@$terms );
99
89
100
90
for (my $j = 0 ; ; ++$j ) {
101
91
@@ -126,7 +116,7 @@ ($n, $terms, $alpha = 1, $maxp = 3 * $n)
126
116
foreach my $n (4 .. 10) {
127
117
my @terms = (1 .. $n );
128
118
my $alpha = 1;
129
- my $m = linear_form_primes($n , \@terms , $alpha );
119
+ my $m = linear_form_primes(\@terms , $alpha );
130
120
say " a($n ) = $m " ;
131
121
}
132
122
0 commit comments