Crazy Librarian's Arithmetic Sequence of Primes
Pyth, 49 bytes
Like the Python3 and other Pyth answer, the runtime for finding 100 numbers is prohibitive. (test suite gives 10)
?}z"1379".f&!tPZ!|FmtPvjzc`Z]dhl`Z*TT3"Empty Set"
Try it online
Python 3, 188 bytes
x=input()
k=1
i=100
if x in"024568":i=print("Empty Set")
while i:k+=1;s=str(k);i-=all(sum(p%d<1for d in range(2,p))<4for p in[k*int(s[:j]+x+s[j:])for j in range(len(s)+1)])and not print(k)
Badly golfed, but here's something for now. Instead of checking p in P and F(z,p) subset of P
, we check that p*f
is a semiprime for each f in F(z,p)
. Combine that with trial division for primality testing, and you get an O(scary)
algorithm.
Perl, 124 bytes
$p=prime_iterator;y/1379//or$i=+~print'Empty Set'}while($i<100){$_=&$p;is_prime"$`@F$'"or redo while//g;$i++
Requires the following command line option: -palMntheory=:all
, counted as 16. Input taken from stdin.
Uses @DanaJ's Math::Prime::Util
module for perl (loaded with the pragma ntheory
). Get it with:
cpan install Math::Prime::Util
cpan install Math::Prime::Util::GMP
is_prime
is deterministic for all values less than 264, which is sufficient for our purposes.
Sample Usage
$ echo 2|perl -palMntheory=:all oscary.pl
Empty Set
$ echo 7|perl -palMntheory=:all oscary.pl
3
19
97
433
487
541
691
757
853
1471
.
.
.
718705783
720574573
737773357
745157779
747215167
767717017
768743377
770294977
771778477
774577777
Expected Runtimes
x = 1 : 1m 09.2s
x = 3 : 0m 04.2s
x = 7 : 2m 52.5s
x = 9 : 0m 11.5s