Tetapkan urutan 1-diindeks sebagai berikut:
A083569(1) = 1
A083569(n)
di manan
bilangan bulat lebih besar dari1
, adalah bilangan bulat terkecil m tidak terjadi sebelumnya sehinggam+n
merupakan bilangan prima.
Tugas Anda adalah menerima n
dan mengembalikan A083569(n)
.
n A083569(n)
1 1
2 3
3 2
4 7
5 6
6 5
7 4
8 9
9 8
10 13
11 12
12 11
13 10
14 15
15 14
16 21
17 20
18 19
19 18
20 17
Lebih banyak testcases dapat ditemukan di sini . Urutan asli pada OEIS dapat ditemukan di sini .
Ini adalah kode-golf . Jawaban terpendek dalam byte menang. Celah standar berlaku.
Jawaban:
Haskell ,
878683807469 byteTerima kasih kepada xnor karena menyarankan beberapa perubahan yang menghemat 3 byte!
Cobalah online!
Saya baru mengenal Haskell, dan Haskell golf, umpan balik sangat dihargai!
Penjelasan
Kami mendefinisikan suatu fungsi
f n
. Kami menetapkanf n
untuk menjadi elemen pertama!!0
dari daftar:Rusak itu adalah:
sumber
[2,3..]
saja bisa[2..]
, menghitung oleh 1 adalah default. Ada built-innotElem
.notElem
tetapi tip pertama sangat membantu dan saya akan memastikan untuk menyimpan yang kedua di saku belakang saya.f 1
salah, seharusnya 1.Jelly ,
1615 byteIni mengasumsikan A083569 (n) ≤ n² (urutannya tampaknya tumbuh secara linear).
Cobalah online!
Bagaimana itu bekerja
sumber
A083569(n)
paling tidakn
bilangan prima lebih besar daripadan
menurut definisinya, yang paling banyak2n
bilangan prima, yang (untukn≥3
) kurang dari4n*log(n)
hasil Rosser-Schoenfeld.Pyth -
181715 byteTerima kasih kepada @isaacg karena telah menyelamatkan saya dua byte!
Kembali ke situs ini, setelah sibuk sebentar, semoga akan bermain golf lebih jauh.
Cobalah online di sini .
sumber
-TY
lebih pendek satu byte dari!/YT
, dan benar dalam kasus yang sama.+hdT
ke+Th
.C # (.NET Core) , 169 byte
Cobalah online!
Sejauh ini cara yang paling efisien untuk menghitung hasil, jadi mohon menahan diri dari perhitungan
f(n)
untukn>=30
dengan kode ini. Langkah pertama adalah menghitung secara rekursif nilai-nilai darif(1)
kef(n-1)
dan kemudian melanjutkan untuk menghitungf(n)
dengan mencari yang pertamai
sepertin+i
prima dani
tidak ada dalam daftar nilai sebelumnya.sumber
x86-64 Assembly,
5755 byteSaya baru mengenal golf, jadi komentar / umpan balik sangat dihargai.
Catatan: ini dioptimalkan untuk panjang kode mesin, bukan untuk panjang sumber.
Menentukan fungsi, menggunakan konvensi standar (yaitu nilai balik dalam eax, argumen pertama di edi, semua register yang disimpan kecuali penelepon ebx) yang mengambil bilangan bulat 32-bit yang tidak ditandatangani dan mengembalikan yang terkecil dll.
Sumber:
Cobalah online!
sumber
Clojure,
158155 byteIni mungkin masih memiliki beberapa lemak, saya tidak cukup senang dengan
(+ 1 i j)
tetapi ini adalah cara termudah untuk menangani kasus dasarn = 1
dan sisanya.((set r)j)
kembalinil
jikaj
tidak di set, dan(seq ())
pada daftar kosong mengembalikan nihil juga. Menghitungn = 1000
dalam 48 detik.Pembaruan: dihapus
nil
dari=
cek karena kode berfungsi dengan benar juga tanpa itu.sumber
Ruby , 62 + 8 = 70 byte
Menggunakan
-rprime
bendera.Cobalah online!
sumber
Python,
194170110 byte84 byte disimpan oleh Leaky Nun
2 byte disimpan oleh mathmandan
Menentukan fungsi s (n) yang mengambil angka sebagai input dan mengembalikan A083569 (n).
Cobalah secara Online
sumber
p=lambda n:any(n%i<1for i in range(2,n))
untuk pemeriksaan awal.while(i in a)|any(...