Diberi bilangan alami , kembalikan prima ke- Kuba .
Primer Kuba
Perdana Kuba adalah bilangan prima dari formulir
di mana dan atau
Detail
- Anda dapat menggunakan pengindeksan berbasis 0 atau 1, apa pun yang paling sesuai untuk Anda.
- Anda dapat mengembalikan prima -th diberikan indeks atau yang pertama bilangan prima dalam rangka meningkatkan, atau alternatifnya Anda dapat mengembalikan daftar tak terbatas / generator yang menghasilkan bilangan prima dalam meningkatkan pesanan.
Uji kasus
Beberapa istilah pertama adalah sebagai berikut:
(#1-13) 7, 13, 19, 37, 61, 109, 127, 193, 271, 331, 397, 433, 547,
(#14-24) 631, 769, 919, 1201, 1453, 1657, 1801, 1951, 2029, 2269, 2437,
(#25-34) 2791, 3169, 3469, 3571, 3889, 4219, 4447, 4801, 5167, 5419,
(#35-43) 6211, 7057, 7351, 8269, 9241, 10093, 10267, 11719, 12097,
(#44-52) 12289, 13267, 13669, 13873, 16651, 18253, 19441, 19927, 20173
Lebih banyak istilah dapat ditemukan di OEIS: Mereka dibagi dalam dua urutan, tergantung pada apakah atau : A002407 dan A002648
Jawaban:
JavaScript (V8) , 54 byte
Program lengkap yang mencetak bilangan prima Kuba selamanya.
Cobalah online!
NB: Kecuali Anda memiliki kertas yang tak terbatas di printer Anda, jangan coba-coba menjalankan ini di konsol browser Anda , di mana
print()
mungkin memiliki arti yang berbeda.JavaScript (ES6),
63 61 6059 byteMengembalikann -th prime Kuba, 1-diindeks.
Cobalah online!
Bagaimana?
Ini didasarkan pada fakta bahwa bilangan prima Kuba adalah bilangan prima dari bentuk:
Formula di atas dapat ditulis sebagai:
atau untuky>0 :
yaitux3−y3x−y untuk masing-masingx=y+1 danx=y+2 .
sumber
05AB1E ,
16129 byteMenghasilkan daftar tanpa batas.
Disimpan 4 byte dengan port rumus Arnaulds Kevin Cruijssen . Disimpan 3 byte lagi berkat Grimy
Cobalah online!
Penjelasan
sumber
N^2+3
di tumpukan " seharusnya3*N^2
. Juga, mengapa)
bukan¯
? Karena lebih mudah mengetik? Dan untuk beberapa alasan saya merasaNnN‚3*¬sO‚
bisa 1 byte lebih pendek, tapi saya tidak melihatnya. Alternatif sedikit byte sama adalahNn3*DN3*+‚
. Tapi saya mungkin hanya melihat hal-hal yang tidak ada di sana ..;) Jawaban yang bagus, jadi +1 dari saya.R ,
7573 byteCobalah online!
-2 byte dengan memperhatikan bahwa saya dapat menghapus tanda kurung jika saya menggunakan
*
sebagai ganti&
(prioritas yang berbeda).Output
n
perdana Kuba (1-diindeks).Ini menggunakan fakta (diberikan dalam OEIS) bahwa bilangan prima Kuba dalam bentukp=1+3n2 atau 4p=1+3n2 untuk beberapa n , yaitu n=a⋅p−13−−−−√ adalah bilangan bulat untuka=1 ataua=4 .
Kuncinya adalah bahwa tidak ada prima dapat dari bentuk2p=1+3n2 atau 3 p = 1 + 3 n2 (*), sehingga kita dapat menghemat 2 byte dengan memeriksa rumus untuk a ∈ { 1 , 2 , 3 , 4 } ( a ∈ { 1 , 4 } (
1:4
) bukanc(1,4)
).Versi kode yang sedikit tidak diubah:
(*) Tidak ada bilangan prima dalam bentuk3 p = 1 + 3 n2 , jika tidak 1 = 3 ( p - n2) akan habis dibagi 3 .
Tidak ada bilangan prima selainp = 2 (yang bukan bilangan prima Kuba) dalam bentuk 2 p = 1 + 3 n2 : n harus ganjil, yaitu n = 2 k + 1 . Memperluas memberi 2 p = 4 + 12 k ( k + 1 ) , maka p = 2 + 6 k ( k + 1 ) dan hal akan genap.
sumber
Bahasa Wolfram (Mathematica) ,
666556 byteCobalah online!
J42161217 -1 dengan menggunakan
⌊ ⌋
bukanFloor[ ]
attinat
⌊3#/4#⌋
alih-alih⌊3#^2/4⌋
For[n=i=0,i<#,PrimeQ@f@++n&&i++]
bukannyan=2;i=#;While[i>0,i-=Boole@PrimeQ@f@++n]
sumber
Java 8,
94888684 byte-6 bytes dengan menggunakan Java prime-checker dari @SaraJ , jadi pastikan untuk melakukan upvote padanya!
-2 byte terima kasih kepada @ OlivierGrégoire . Karena angka pertama yang kita periksa adalah
7
, kita dapat menghapus trailing%n
dari pemeriksa-utama Sara, yang untuk mengakhiri perulangann=1
.-2 byte terima kasih kepada @ OlivierGrégoire dengan memasukkan jawaban @Arnauld .
Output dibatasi ruang tanpa batas.
Cobalah online.
Penjelasan (dari versi 86 byte yang lama): TODO: Perbarui penjelasan
sumber
v->{for(int n=7,i=3,p,x,d,r=0;;i+=++r%2*3,n+=i,System.out.print(x>1?x+" ":""))for(x=n,d=1;++d<n;x=x%d<1?0:n);}
mungkin seseorang dapat menggunakan ini untuk golf? Saya tidak bisa.,p
dan mengubahi+=++r%2*3,n+=i
ken+=i+=++r%2*3
, tapi kemudian aku masih akan berakhir pada 106 byte. Menggunakan Java 11 iniString#repeat
dengan prime-regex adalah 105 byte:v->{for(int n=7,i=3,r=0;;n+=i+=++r%2*3)if(!"x".repeat(n).matches(".?|(..+?)\\1+"))System.out.println(n);}
.%n
tidak diperlukan, bukan?Bahasa Wolfram (Mathematica) , 83 byte
Cobalah online!
sumber
Jelly , 12 byte
Cobalah online!
Berdasarkan metode @ Arnauld . Mengambil n pada stdin dan mengembalikan banyak bilangan prima Kuba.
sumber
Bahasa Wolfram (Mathematica) , 83 byte
Solusi ini akan menampilkan perdana Kuba ke-n dengan manfaat tambahan berupa cepat dan mengingat semua hasil sebelumnya dalam simbol f.
Cobalah online!
sumber
Spasi , 180 byte
Huruf
S
(spasi),T
(tab), danN
(baris baru) ditambahkan hanya sebagai penyorotan.[..._some_action]
ditambahkan sebagai penjelasan saja.Output-batas baru dibatasi tanpa batas.
Cobalah online (dengan spasi, tab, dan hanya baris baru).
Penjelasan dalam pseudo-code:
sumber
Python 3 ,
110108102 byteMetode yang mirip dengan jawaban Mathematica saya (yaitu
isPrime(1+⌊¾n²⌋) else n++
) menggunakan pemeriksa prime golf ini dan mengembalikan generator tanpa batas anonimCobalah online!
count
dari 2 +1 sehinggaand x>1
pemeriksa utama yang saya pinjam tidak perlu -7sumber
g=
. Saya hanya memasukkannya di tempat pertama karena memungkinkan visual cepat pada TIO denganprint(next(g) for i in range(52))
.Japt ,
1413 byteDiadaptasi dari formula Arnauld . 1-diindeks.
Cobalah
1 byte disimpan berkat EmbodimentOfIgnorance.
sumber
(
.Racket , 124 byte
Cobalah online!
Mengembalikan n-th perdana Kuba, 0-diindeks.
Menggunakan rumus jawaban JavaScript @ Arnauld
sumber
Python 3 , 83 byte
mencetak bilangan prima Kuba selamanya.
Cobalah online!
sumber
Perl 6 ,
3331 byte-2 byte terima kasih kepada Grimy
Cobalah online!
Blok kode anonim yang mengembalikan daftar malas bilangan prima Kuba. Ini menggunakan rumus Arnauld untuk menghasilkan kemungkinan bilangan prima Kuba, lalu
&is-prime
menyaringnya.Penjelasan:
sumber
1+0+|
bisa saja1+|
Pari / GP , 51 byte
Menggunakan rumus Arnauld .
Cobalah online!
sumber
APL (NARS), 98 karakter, 196 byte
indentasi:
uji:
didasarkan pada: jika y dalam N, satu kemungkinan Perdana Cuban adalah
Perdana mungkin Kuba berikutnya
sumber