Nah, pustakawan itu menangkap Anda selingkuh dari pekerjaan Anda dengan menggunakan algoritma pengurutan Anda , jadi sekarang Anda sedang dihukum. Anda telah diperintahkan untuk membuat beberapa kode sehingga pustakawan dapat mengesankan objek kasih sayang mereka yang tak terbalas, guru matematika. Jadi itulah yang berarti "Tugas-tugas lain sebagaimana ditugaskan" ...
Setiap orang akrab dengan urutan bilangan alami di basis 10, yang disebut N :
0, 1, 2, 3, 4, 5, 6, ...
Dari itu, kita dapat menghasilkan urutan bilangan prima, sebut saja P , sehingga setiap elemen dalam P memiliki tepat dua pembagi dalam N , yaitu 1
dan itu sendiri. Urutan ini adalah:
2, 3, 5, 7, 11, 13, ...
OK, cukup rutin sejauh ini.
Pustakawan pemikiran dari fungsi nifty F (x, y) yang mengambil sejumlah x
dari N , dengan kondisi 0 <= x <= 9
, dan sejumlah y
dari N , dan menyisipkan x
ke dalam y
ekspansi desimal 's di setiap posisi (yaitu, mengawali, memasukkan, atau menambahkan x
ke y
), lalu mengembalikan kumpulan nomor baru yang diurutkan.
Misalnya, F (6, 127) akan menghasilkan
1267, 1276, 1627, 6127
Itu masih agak membosankan. Keinginan pustakawan untuk rempah-rempah hal-hal sedikit lebih oleh bukannya menetapkan fungsi baru z -> {p : p in P and F(z,p) subset of P}
, diurutkan menaik.
Misalnya, z (7) adalah
3, 19, 97, 433, 487, 541, ...
karena 37
dan 73
keduanya prima, 719
179
dan 197
semuanya prima, dll.
Perhatikan bahwa z (2) kosong, karena tidak ada bilangan prima yang 2
ditambahkan akan tetap menjadi bilangan prima. Demikian pula untuk {0,4,5,6,8}.
Tugas Anda adalah menulis kode yang akan menghasilkan dan menampilkan 100 angka pertama dalam urutan z (x) untuk x yang diberikan .
Memasukkan
Integer tunggal x sedemikian rupa sehingga 0 <= x <= 9
. Input dapat melalui argumen fungsi, STDIN, atau yang setara.
Keluaran
Urutan dari 100 angka pertama, dibatasi oleh pilihan Anda, untuk STDOUT atau setara, sehingga urutan memenuhi z (x) seperti dijelaskan di atas. Jika z (x) kosong, seperti halnya untuk {0,2,4,5,6,8}, kata-kata tersebut Empty Set
seharusnya menjadi output.
Batasan
- Ini adalah kode-golf, karena Anda harus menyalin ini ke kartu indeks sehingga pustakawan dapat menunjukkan guru matematika, dan kram tangan Anda dengan mudah.
- Batasan celah standar berlaku. Pustakawan tidak mentolerir curang.
Urutan referensi
x = 1: A069246
x = 3: A215419
x = 7: A215420
x = 9: A215421
Terkait: Temukan prime rapuh terbesar / Temukan prime terkecil dari substring / Temukan prime terbesar yang masih prima setelah penghapusan digit
"
tidak perlu, pekerjaan yang sangat bagus.Python 3, 188 byte
Golf buruk, tapi ada sesuatu untuk saat ini. Alih-alih memeriksa
p in P and F(z,p) subset of P
, kami memeriksa itup*f
adalah semiprime untuk masing-masingf in F(z,p)
. Gabungkan itu dengan divisi percobaan untuk pengujian primality, dan Anda mendapatkanO(scary)
algoritma.sumber
O(scary)
Perl, 124 byte
Membutuhkan opsi baris perintah berikut:,
-palMntheory=:all
dihitung sebagai 16. Input diambil dari stdin.Penggunaan @DanaJ 's
Math::Prime::Util
modul untuk perl (sarat dengan pragma yangntheory
). Dapatkan dengan:is_prime
bersifat deterministik untuk semua nilai kurang dari 2 64 , yang cukup untuk tujuan kami.Contoh Penggunaan
Runtime yang Diharapkan
x = 1 : 1m 09.2s
x = 3 : 0m 04.2s
x = 7 : 2m 52.5s
x = 9 : 0m 11.5s
sumber
Pyth, 58
Ini test suite hanya menghitung 10 angka pertama karena dibutuhkan terlalu lama untuk menghasilkan sisanya. Brute memaksakan keutamaan dan pemasukan digit. Menunjukkan kinerja buruk sehingga saya belum dapat menjalankannya hingga 100, jadi tolong beri tahu saya jika ada masalah.
sumber