Latar Belakang
Pertimbangkan urutan berikut ( A051935 di OEIS):
- Mulai dengan istilah .
- Temukan bilangan bulat terendah lebih besar dari sehingga adalah bilangan prima.2 2 + n
- Temukan bilangan bulat terendah lebih besar dari sehingga adalah prima dll. n 2 + n + n ′
Definisi yang lebih formal:
Beberapa syarat pertama dari urutan ini adalah (harap lihat ini sebagai kasus uji):
2, 3, 6, 8, 10, 12, 18, 20, 22, 26, 30, 34, 36, 42, 44, 46, 50, 52, 60, 66, 72, 74, ...
Tugas
Tugas Anda adalah untuk menghasilkan urutan ini dengan salah satu cara berikut:
- Keluarkan persyaratannya tanpa batas.
- Diberikan , menghasilkan istilah ( , atau diindeks).
- Diberikan , keluaran ( istilah n pertama ).
Anda dapat bersaing dalam bahasa pemrograman apa pun dan dapat mengambil input dan memberikan output melalui metode standar apa pun , sambil memperhatikan bahwa celah ini dilarang secara default. Ini adalah kode-golf , jadi pengiriman terpendek (dalam byte) untuk setiap bahasa menang.
Jawaban:
Brachylog , 13 byte
Cobalah online!
Output adalah daftar n pertama syarat urutan.
sumber
Python 2 ,
6362 byteCobalah online!
sumber
Jelly ,
119 byteIni adalah program lengkap yang menggunakan n sebagai argumen dan mencetak n istilah pertama dari urutan tersebut.
Cobalah online!
Bagaimana itu bekerja
sumber
05AB1E v2 , 10 byte
Cobalah online!
Ini hanya berfungsi dalam versi non-legacy, penulisan ulang Elixir. Menghasilkan aliran bilangan bulat tanpa batas. Ada beberapa bug dengan tes utama yang telah diperbaiki dalam komit terbaru, tetapi belum tayang langsung di TIO. Ini bekerja secara lokal. Berikut ini adalah GIF dari eksekusi pada mesin saya, dimodifikasi untuk menampilkan beberapa istilah pertama daripada seluruh aliran.
Bagaimana itu bekerja
Menentukan urutan tak terbatas rekursif dengan kasus dasar . The Struktur adalah di antara fitur yang sangat keren baru 05AB1E ini. Secara singkat, dibutuhkan fungsi , pengaturan untuk argumen integer yang diberikan, dalam hal ini .a ( n ) a ( 0 ) 22 a ( n ) a ( 0 ) 2
λ
Dalam bagian kode ini,[ a ( 0 ) , a ( 1 ) , ... , a ( n - 1 ) ]
λ
peran berbeda. Sudah berada di dalam lingkungan rekursif, ia malah menghasilkan , daftar semua hasil sebelumnya. Kemudian, jumlahkan mereka.O
Gandakan jumlahnya untuk digunakan nanti dan tambahkan ke salinan kedua.a ( n - 1 )
Menghasilkan prime terendah yang lebih tinggi daripada jumlah di atas.
Akhirnya, ambil perbedaan mutlak antara prime dihitung di atas dan salinan pertama dari jumlah yang dihitung sebelumnya (jumlah semua iterasi sebelumnya).
Aliran kemudian dicetak secara implisit ke STDOUT tanpa batas.
sumber
Perl 6 , 45 byte
Cobalah online!
Mengembalikan daftar malas yang menghasilkan urutan tanpa akhir.
Penjelasan:
Ini menggunakan operator Sequence
...
yang mendefinisikan urutan sebagai:sumber
Ruby
-rprime
, 34 byteCobalah online!
Output tanpa batas.
sumber
JavaScript (ES6), 63 byte
Mengembalikan istilah , 1-diindeks.nt h
Cobalah online!
sumber
Pyth ,
1211 byteCobalah online!
Disimpan 1 byte berkat isaacg.
Menghasilkan angka pertama
n
seperti itu, menggunakan indeks berbasis 1..f
menemukank
bilangan bulat pertama yang memenuhi kriteria tertentu mulai dari nol. Di sini, kriterianya adalah bahwa bilangan prima sebelumnya yang kami hitung;
, ditambah bilangan saat iniZ
,, adalah bilangan prima (P
). Jika ya, kami juga memperbarui prime yang terakhir dihitung menggunakan perilaku hubungan singkat dari logika dan fungsi (&
). Sayangnya.f
variabel default adalahZ
yang biaya satu byte dalam pembaruan.Trik yang ditemukan oleh isaacg adalah untuk menyimpan negasi dari prime terakhir dan menguji pada itu minus nilai saat ini. Ini lebih pendek di Pyth karena pemeriksaan awal kelebihan beban: pada bilangan positif ia menemukan factorisation prima sedangkan pada bilangan negatif menentukan apakah nilai positif bilangan prima.
Ini kurang lebih diterjemahkan menjadi:
sumber
_+
dengan-
dan+
dengan-
untuk -1 byte.MATL , 21 byte
Cobalah online!
Keluaran adalah n pertama dari sekuens.
Penjelasan:
Membangun daftar bilangan prima (dengan awal 0), dan pada akhirnya menemukan mengembalikan perbedaan antara bilangan prima berturut-turut dalam daftar.
sumber
Haskell , 67 byte
Cobalah online!
(1#1)2 2
adalah fungsi yang tidak mengambil input dan menghasilkan daftar yang tidak terbatas.jawaban lama:
Haskell ,
88837876 byteTes primality berasal dari jawaban ini dan ditingkatkan oleh Christian Sievers (-2 bytes).
-5 byte terima kasih kepada WW .
Cobalah online!
sumber
^2
. Itu akan mengubah predikat dari pengujian prima ke pengujian prima atau 4 , yang tidak masalah dalam aplikasi ini.05AB1E (warisan) , 12 byte
Cobalah online!
Penjelasan
Ada beberapa solusi 12-byte yang berbeda.
Yang satu ini bisa jadi 10 byte jika kita memiliki variabel yang dapat digunakan diinisialisasi sebagai 0 (bukan 1 dan 2).
sumber
Python 2 , 119 byte
Cobalah online!
Fungsi Prime berikutnya f () diambil dari jawaban ini .
Fungsi g () mengambil bilangan bulat non-negatif dan mengembalikan daftar semua item dalam urutan hingga indeks itu.
sumber
Python 2 ,
9998 byteCobalah online!
1 byte thx ke Tn . Xcoder .
sumber
k=s-~v
.Haskell ,
101 9997 byteFungsi
l
tidak mengambil argumen dan mengembalikan daftar tanpa batas. Tidak sesingkat pendekatan langsung oleh @ovs (dan saya jelas mencuri beberapa bagian dari jawaban mereka), tapi mungkin masih bisa golf?Terima kasih @ H.Wiz untuk -2 byte!
Cobalah online!
sumber
Python 2 ,
8280 byteCobalah online!
Ini menghasilkan nomor urutan n (berdasarkan-0). Dengan memindahkan
print
loop, ini dapat dimodifikasi untuk menampilkann
item pertama pada bytecount yang sama: Coba online!sumber
C (gcc) ,
10099 byteCobalah online!
sumber
Japt, 17 byte
Menghasilkan
n
istilah th, 0-diindeks.Cobalah
sumber