Priming a Pristine World

11

Sangat terinspirasi oleh Programming a Pristine World . Juga terkait erat dengan tantangan ini .


Mari kita definisikan prima murni sebagai angka yang dengan sendirinya prima, tetapi tidak akan lagi prima jika Anda menghapus substring yang berdekatan dari digit N basis 10, di mana 0 < N < digits in number.

Misalnya, 409 adalah bilangan prima murni karena 409 itu sendiri bilangan prima, tetapi semua angka yang dihasilkan dari menghilangkan substring 1 digit bukanlah bilangan prima:

40
49
09 = 9

dan semua angka yang dihasilkan dari penghapusan substring dengan panjang 2 tidak prima:

4
9

Di sisi lain, bilangan prima 439 tidak asli. Menghapus berbagai substring menghasilkan:

43
49
39
4
9

Sementara 49, 39, 4, dan 9 semuanya non-prima, 43 adalah prima; dengan demikian, 439 bukan murni.

2, 3, 5, dan 7 sepele, karena mereka tidak bisa menghilangkan substring.

Tantangan

Tantangan Anda adalah membuat program atau fungsi yang menghasilkan bilangan bulat positif N dan menghasilkan perdana murni ke-N. Kode harus selesai dalam waktu kurang dari 1 menit pada PC modern apa pun untuk input apa pun hingga 50.

Kode terpendek dalam byte menang.

Sebagai referensi, berikut adalah 20 bilangan prima pertama:

N    Pristine prime
1    2
2    3
3    5
4    7
5    11
6    19
7    41
8    61
9    89
10   409
11   449
12   499
13   821
14   881
15   991
16   6299
17   6469
18   6869
19   6899
20   6949

Berikut adalah daftar lengkap bilangan prima murni hingga 1e7, atau N = 376.

Akhirnya, berikut adalah dua entri OEIS yang terkait:

  • A033274 : sangat mirip, tetapi dihasilkan dengan menjaga substring alih-alih menghapusnya.
  • A071062 : sangat mirip, tetapi dihasilkan dengan cara yang jauh berbeda.
Produksi ETH
sumber

Jawaban:

5

Pyth, 29 byte

e.f>}ZPZsmq1lPs.D`Z}Fd.CU`Z2Q

Golf, penjelasan, dll. Untuk diikuti.

isaacg
sumber
4

CJam, 51 byte

1ri{{)_mp1$s_,)2m*{:>},\f{\~2$<@@>+0e|imp}1b!&!}g}*

Hanya lulus pertama, ini mungkin bisa ditingkatkan banyak.

Uji di sini.

Martin Ender
sumber
3

Japt, 61 byte

$while(V<U)T$°,W=Ts ,Tj «Wl o d@1o1-X+Wl)dZ{WjYZ n j} } ©V°;T

Cobalah online!

Sayang sekali saya belum menerapkan loop di Japt, kalau tidak, ini akan menjadi sedikit lebih baik. Masih bermain golf ...

Produksi ETH
sumber