Ini adalah urutan A054261 .
The th nomor penahanan utama adalah jumlah terendah yang berisi pertama bilangan prima sebagai substring. Misalnya, angka adalah angka terendah yang berisi 3 bilangan prima pertama sebagai substring, menjadikannya bilangan penampung prima ke-3.
Sepele untuk mengetahui bahwa empat nomor penahanan prima pertama adalah , , 235 dan 2357 , tetapi kemudian semakin menarik. Karena bilangan prima berikutnya adalah 11, bilangan penampung perdana berikutnya bukan 235711 , tetapi angka 112357 karena bilangan prima terkecil dengan properti.
Namun, tantangan sebenarnya datang ketika Anda melampaui 11. Nomor penahanan utama berikutnya adalah . Perhatikan bahwa dalam nomor ini, substring 11
dan 13
tumpang tindih. Jumlahnya 3
juga tumpang tindih dengan nomor tersebut 13
.
Mudah untuk membuktikan bahwa urutan ini meningkat, karena nomor berikutnya harus memenuhi semua kriteria nomor sebelum itu, dan memiliki satu substring lagi. Namun, urutannya tidak meningkat secara ketat, seperti yang ditunjukkan oleh hasil untuk n=10
dan n=11
.
Memasukkan
Bilangan bulat tunggal n>0
(saya kira Anda juga bisa memilikinya 0-diindeks, kemudian membuat n>=0
)
Keluaran
Entah n
nomor penahanan utama th, atau daftar yang berisi n
nomor penahanan perdana pertama .
Angka yang saya temukan sejauh ini adalah:
1 => 2
2 => 23
3 => 235
4 => 2357
5 => 112357
6 => 113257
7 => 1131725
8 => 113171925
9 => 1131719235
10 => 113171923295
11 => 113171923295
12 => 1131719237295
Perhatikan bahwa n = 10
dan n = 11
adalah angka yang sama, karena adalah angka terendah yang berisi semua angka , tetapi juga berisi .
Karena ini ditandai kode golf, dapatkan golf! Solusi brute force diperbolehkan, tetapi kode Anda harus bekerja untuk setiap input dalam teori (yang berarti bahwa Anda tidak bisa hanya menggabungkan bilangan prima n pertama). Selamat bermain golf!
P
operator membuat pemetaan eksplisit untuk memeriksa bilangan prima dalam bilangan (alih-alih memeriksa apakah bilangan tersebut dalam array bilangan prima)? Ini adalah solusi yang indah, saya ragu Anda bisa membuat solusi menggunakan perintah lebih sedikit.P
adalah produk. Ini pada dasarnya mengalikan semua nilai dalam daftar. TheÅp
akan membuat daftar dengan yang pertaman
jumlah bilangan prima, di manan
merupakan masukanI
dalam kasus ini. Theå
akan memeriksa setiap nomor dalam daftar ini bilangan prima jika mereka berada di saat ini jumlah daftar tak terbatas, di mana ia akan memberikan1
untuk truthy dan0
untuk falsey. Jadi produk pada dasarnya memeriksa apakah semuanya benar; jika semua bilangan prima ada di dalam angka saat ini. Jika ada 0,P
hasilnya dalam falsey juga. Tetapi jika semuanya1
,P
hasilnya dalam kebenaran, dan.Δ
-loop berhenti.1µNIÅpåP
. Bagi mereka yang tidak tahu 05AB1E, penjelasan untuk saya juga:1µ
- sampai variabel counter mencapai 1 (mulai dari 0, naikkanN
secara bertahap sebesar 1 dan lakukan:NIÅpåP
- periksa apakah semua bilangan <input> pertama munculN
dan , jika demikian,X
alih - alih1
, karena alasan), tapi aku beralih ke ini karena aku belum pernah punya kesempatan untuk menggunakan∞
sebelumnya :)Jelly , 11 byte
Cobalah online!
Kekuatan kasar sederhana. Tidak sepenuhnya yakin bagaimana
#
arity bekerja, jadi mungkin ada ruang untuk perbaikan.Bagaimana itu bekerja
sumber
wⱮẠ¥1#ÆN€
menghemat dua byte.Java 8, 143 byte
Cobalah online.
CATATAN:
n=7
.n=9
karena batas ukuranint
(maksimum2,147,483,647
).int
kelong
, maksimum ditingkatkan ke output di bawah ini9,223,372,036,854,775,807
(kiran=20
-kira menurut saya?)java.math.BigInteger
maksimum dapat ditingkatkan ke ukuran apa pun (secara teori), tetapi akan menjadi sekitar +200 byte setidaknya karena verbositasjava.math.BigInteger
metode.Penjelasan:
sumber
JavaScript (ES6),
105 ... 9291 byteCobalah online!
Bagaimana?
Berkomentar
sumber
Ruby , 58 byte
Cobalah online!
Brute-force, bekerja hingga 7 pada TIO.
sumber
Pyth , 14 byte
Cobalah online!
Pyth , 15 byte
Sedikit lebih cepat tetapi 1 byte lebih lama.
Cobalah online!
sumber
Jelly , 14 byte
Cobalah online!
sumber
Arang , 42 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Bangun
n
bilangan prima pertama dengan pembagian percobaan semua bilangan bulat dengan semua bilangan prima yang ditemukan sebelumnya.Ulangi semua bilangan bulat sampai kami menemukan yang berisi semua bilangan prima sebagai substring.
Keluarkan hasilnya ke string dan cetak secara implisit.
Kecepatan program dapat dua kali lipat dengan biaya byte dengan mengganti terakhir
≦⊕η
dengan≦⁺²η
tapi masih terlalu lambat untuk menghitungn>6
.sumber
Perl 6 ,
6359 byte-4 byte terima kasih kepada nwellnhof
Cobalah online!
Solusi brute force yang keluar pada TIO untuk angka di atas 5, tapi saya cukup yakin itu berfungsi dengan benar. Menemukan angka positif pertama yang berisi
n
bilangan prima pertama . Inilah solusi yang tidak ada batas waktunyan=6
.Penjelasan:
sumber
Python 2 , 131 byte
Cobalah online!
f
adalah fungsinya.sumber
Python 2 , 91 byte
Cobalah online!
sumber
SAS, 149 byte
Input dimasukkan mengikuti
cards;
pernyataan, seperti:Keluarkan dataset
p
, dengan hasilnyav
, dengan baris output untuk setiap nilai input. Harus secara teknis bekerja untuk semua kasus uji yang diberikan (bilangan bulat maks dengan presisi penuh dalam SAS adalah 9.007.199.254.740.992), tetapi saya menyerah setelah membiarkannya berpikir selama 5 menit pada n = 8.Penjelasan:
sumber
Haskell , 102 byte
Cobalah online!
Penjelasan / Tidak Diundang
Karena kita sudah
Data.List
mengimpor kita mungkin juga menggunakannya: Daripada yang lamatake n[p|p<-[2..],all((>0).mod p)[2..p-1]]
kita bisa menggunakan cara lain untuk menghasilkan semua bilangan prima yang kita butuhkan. Yaitu, kami menghasilkan jumlah komposit yang cukup dan menggunakannya bersama-sama dengan(\\)
:Menggunakanπ( n ) < n2log( n2) . Sisanya hanyalah pemahaman daftar sederhana:
n*n
cukup karenasumber
Japt,
2018 byteJauh dari pekerjaan terbaik saya, saya senang membuatnya bekerja setelah hari saya punya. Saya yakin saya akhirnya akan mengakhirinya di boozer nanti!
Cobalah - butuh 13 detik untuk menjalankan input
7
, melempar dengan goyah setelah itu (versi yang diperbarui tidak berguna5
untuk saya, tetapi itu mungkin saja telepon saya).sumber
F.h()
sendiri dan tampaknya rusak; ETH pasti mengubah sesuatu.