Math-NumSeq
view release on metacpan or search on metacpan
lib/Math/NumSeq/PrimeIndexPrimes.pm view on Meta::CPAN
Math::NumSeq::PrimeIndexPrimes -- primes with prime number indexes
=head1 SYNOPSIS
use Math::NumSeq::PrimeIndexPrimes;
my $seq = Math::NumSeq::PrimeIndexPrimes->new;
my ($i, $value) = $seq->next;
=head1 DESCRIPTION
This is the sequence of primes which are at prime indexes,
3, 5, 11, 17, 31, 41, 59, 67, 83, 109, 127, 157, 179, 191, ...
starting i=1
The primes begin
index prime
1 2
2 3 <--+ primes at prime indexes
3 5 <--+
4 7 |
5 11 <--+
6 13 |
7 17 <--+
8 19
The primes marked "<--" have an index which is prime too.
=head2 Level
Optional C<level> controls how many repetitions of the prime indexing is to
be applied. The level is based on the order of primeness by Neil Fernandez
in the PrimeIndexOrder sequence.
=over
L<http://www.borve.org/primeness/FOP.html>
=back
The default is level=2, asking for primes with an order of primeness
E<gt>=2. level=1 gives all primes, and level=0 gives all integers.
The next higher level=3 restricts to primes whose index is prime, and then
in addition demands that prime is at an index which is prime.
level => 3
5, 11, 31, 59, 127, 179, 277, 331, 431, 599, ...
Successive levels filter further and the remaining values soon become quite
large. For example level=11 starts at 9737333 (and is quite slow to
generate).
=head2 Level Exact
Optional C<level_type=E<gt>'exact'> asks for values which have exactly
C<level> as their order of primeness.
With the default level 2 this means primes whose index is a prime, but then
the index of that index is not a prime, ie. the iterations of prime index
stops there,
level_type => 'exact', level => 2
3, 17, 41, 67, 83, 109, 157, 191, 211, 241, 283, 353, ...
Here 11 is not in the sequence because its order of primeness is 3, since 11
is at index 5, 5 is at index 3, 3 is at index 2.
level_type=exact,level=1 means those primes which are at composite indexes.
This is all the primes which are not prime index primes, ie. primes not in
the default prime-index-primes sequence.
level_type => 'exact', level => 1
2, 7, 13, 19, 23, 29, 37, 43, 47, 53, 61, 71, 73, 79, ...
level_type=exact,level=0 means integers which have order of primeness 0,
which is the composites, ie. the non-primes.
=head1 FUNCTIONS
See L<Math::NumSeq/FUNCTIONS> for behaviour common to all sequence classes.
=over 4
=item C<$seq = Math::NumSeq::PrimeIndexPrimes-E<gt>new (level =E<gt> $n)>
Create and return a new sequence object.
=item C<$i = $seq-E<gt>value_to_i_estimate($value)>
Return an estimate of the i corresponding to C<$value>. C<$value> can be
any size.
=back
=head1 Formulas
=head2 Value to i Estimate
The i for a given value can be estimated by applying the prime-to-i estimate
of the plain primes sequence (L<Math::NumSeq::Primes/Value to i Estimate>)
according to the C<level> parameter.
repeat level many times
value = Primes value_to_i_estimate(value)
if level_type eq "exact"
value = value - Primes value_to_i_estimate(value)
i_estimate = value
For example the default level=2 prime index primes applies the Primes
estimate twice. A given value is presumed to be a prime, it's index is
estimated. Then that index also has to be a prime (so the original value is
a prime index prime), and the index of that is again estimated by the Primes
module.
For C<level_type=E<gt>'exact'> the final index must be a composite, as
opposed to "minimum" where it can be either prime or composite. That
restriction means an extra final Composite value to i, derived from the
( run in 0.730 second using v1.01-cache-2.11-cpan-71847e10f99 )