Build bitmaps incrementally instead of starting with a list when reading
candidate sequences.

Add options to perform PRP and P-1 tests on candidates at the bottom of the
sieve range when it becomes efficient to do so.

Interleave bitmaps for sequences with candidate n of different parity.
Even better, find m=min_{nmin<n<nmax}gcd(n_{i+1}-n_i) for each sequence and
compress the bitmaps by a factor of m. For the base 5 projects m will be at
least 2, and most sequences will have m=4 or higher. The same idea can be
used to compress the ABCD files, but it may not affect the zipped size much.

Design a lookup table to replace bitmaps once they become too sparse.

Add code to do internal self tests and benchmarks.

Write a utility program srdata to manage factors, prp residues, etc.

Add the ability to accept a variable k in a sequence expression along with
--kmin --kmax. For example `srsieve --kmin 100 --kmax 200 "k*5^n+1" would
sieve all sequences 100*5^n+1, 101*5^n+1, ..., 200*5^n+1.

Add an option to remove a sequence from the sieve when a prime term is
found. This would really only be useful in conjunction with the variable k
option above.

Add the option to write the sieve as a Prime95 file for P-1 factoring. What
default value to use for B1,B2? *** There is a problem with this, Prime95
doesn't delete the l*/m* files and so gets confused when there are two
numbers with the same exponent in the worktodo.ini file. ***

Add a make target for a siever specialised to the base 5 projects, e.g. with
--factors and --checkpoint enabled by default. The hashtable size could also
be made constant perhaps.

Write a vec_mulmod function in assembler, for use in the giant steps:
vec_mulmod(V,len,a,p) { V[i] = mulmod(V[i],a,p) for 0 <= i < len }.

Make srfile --results accept PRP residues and P-1 factors from results.txt
for removal from the sieve.

Read command line arguments from a worktodo.txt file if one exists in the
current directory when started. When finished, remove the first line of
worktodo.txt and restart with the next line if there is one.

Add an assembler version of mul5mod64. There are probably gains to be had by
using CMOVs to eliminate some of the branches.

Accept sequences of the form (k*b^n+c)/d. This can be done by finding
d=p1^m1*p2^m2*...*pk^mk and then sieving k*b^n+c as usual except we test
whether pi^(mi+1) divides k*b^n+c instead of sieving pi. Increase
small_sieve_limit to include all pi and it won't affect the speed of the
main sieves at all.

Add --twin switch to srfile to convert a normal sieve into a twin sieve.
