-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprog.pl
109 lines (80 loc) · 1.79 KB
/
prog.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/perl
# Primes p such that if k is the sum of the first p primes then the sum of the first k primes is prime.
# https://oeis.org/A321343
use 5.014;
use ntheory qw(:all);
use Math::AnyNum qw(:overload);
{
my $prev_p;
my $prev_sum;
sub sum_primes_1 {
my ($n) = @_;
if (not defined($prev_p)) {
$prev_p = $n;
$prev_sum = 0 + sum_primes($n);
return $prev_sum;
}
$prev_sum += sum_primes($prev_p + 1, $n);
$prev_p = $n;
return $prev_sum;
}
}
{
my $prev_p;
my $prev_sum;
sub sum_primes_2 {
my ($n) = @_;
if (not defined($prev_p)) {
$prev_p = $n;
$prev_sum = 0 + sum_primes($n);
return $prev_sum;
}
$prev_sum += sum_primes($prev_p + 1, $n);
$prev_p = $n;
return $prev_sum;
}
}
{
my $prev_i;
my $prev_p;
sub after_prime1 {
my ($n) = @_;
if (not(defined($prev_i))) {
$prev_i = $n;
$prev_p = nth_prime($n);
return $prev_p;
}
for (1 .. $n - $prev_i) {
$prev_p = next_prime($prev_p);
}
$prev_i = $n;
return $prev_p;
}
}
{
my $prev_i;
my $prev_p;
sub after_prime2 {
my ($n) = @_;
if (not(defined($prev_i))) {
$prev_i = $n;
$prev_p = nth_prime($n);
return $prev_p;
}
for (1 .. $n - $prev_i) {
$prev_p = next_prime($prev_p);
}
$prev_i = $n;
return $prev_p;
}
}
my $i = 1;
forprimes {
my $k = $_;
my $p = nth_prime(sum_primes_2(nth_prime($k)));
my $sum = sum_primes_1($p);
if (is_prime($sum)) {
print "a($i) = $k\n";
++$i;
}
} 1e7;