Latar Belakang
Sebuah super prima adalah bilangan prima yang indeks dalam daftar semua bilangan prima juga perdana. Urutannya terlihat seperti ini:
3, 5, 11, 17, 31, 41, 59, 67, 83, 109, 127, 157, 179, 191, ...
Ini adalah urutan A006450 dalam OEIS .
Tantangan
Diberi bilangan bulat positif, tentukan apakah bilangan super-prima.
Uji Kasus
2: salah 3: benar 4: salah 5: benar 7: salah 11: benar 13: salah 17: benar 709: benar 851: salah 991: benar
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat di setiap bahasa menang.
code-golf
sequence
number-theory
decision-problem
primes
musicman523
sumber
sumber
Jawaban:
Jelly , 5 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Mathematica,
2623 byteTerima kasih kepada user202729 untuk menghemat 3 byte.
Ini memanfaatkan fakta bahwa Mathematica membuat sebagian besar ungkapan yang tidak masuk akal tidak dievaluasi (dalam hal ini, logika
And
dua angka) danMap
dapat diterapkan ke ekspresi apa pun, bukan hanya daftar. Jadi kita menghitungAnd
input dan indeks utamanya, yang tetap seperti itu, dan kemudian kitaMap
uji primality atas ekspresi ini yang mengubah dua operanAnd
menjadi boolean, sehinggaAnd
kemudian dapat dievaluasi.sumber
PrimeQ/@(#&&PrimePi@#)&
.Jelly , 6 byte
Cobalah online!
Gunakan teknik yang sama dengan jawaban Japt saya: Hasilkan bilangan prima hingga n , dapatkan indeks n dalam daftar itu, dan periksa primality. Jika n itu sendiri tidak prima, indeksnya adalah 0 , yang juga tidak prima, jadi 0 tetap dikembalikan.
sumber
Japt ,
1311 byteUji secara online!
Penjelasan
Ini sebenarnya sangat mudah, tidak seperti pengiriman asli saya:
sumber
Python 3 ,
1049793 byteMengembalikan
0
/1
, paling banyak 4 byte lebih lama jika harusTrue
/False
.Cobalah online!
sumber
f
, Anda dapat memformat ulang kode Anda seperti ini dan mengeluarkannya dari jumlah byte.Jelly , 7 byte
Cobalah online!
ÆC
menghitung jumlah bilangan prima kurang dari atau sama dengan input (jadi, jika input adalah bilangan prima n , ia mengembalikan n ). KemudianÆP
uji indeks ini untuk mengetahui keaslian. Akhirnya,a
apakah AND logis antara hasil ini danÆP
(uji keaslian) dari input asli.sumber
Haskell , 62 byte
Cobalah online! Penggunaan:
f 991
hasilTrue
.sumber
05AB1E , 6 byte
Cobalah online!
Penjelasan
sumber
Pyth , 12 byte
Cobalah online!
Penjelasan
sumber
Pyke, 8 byte
Coba di sini!
sumber
Perl 6 , 46 byte
Cobalah online!
sumber
QBIC , 33 byte
Penjelasan
sumber
Mathematica,
3529 byte-6 byte dari @MartinEnder
sumber
P@P@Range@#
harus menyimpan banyak.Haskell, 121 byte
sumber
(\(_,x)->x)
adalahsnd
,(\(x,_)->p x)
adalah(p.fst)
. Keduanyafst
dansnd
berada di Prelude, jadi tidak perlu impor.r x=elem x$take x s
. Namun, dalam kasus ini Anda dapat pergi pointfree (memperkenalkan tanda kutip mundur lagi) dan menghilangkan nama fungsi:elem<*>(`take`s)
.Positron , 148 byte
Cobalah online!
sumber
Pari / GP , 31 byte
Cobalah online!
sumber
Matlab,
3634 byteDisimpan 2 byte berkat Tom Carpenter.
Implementasi yang sangat naif menggunakan fungsi bawaan:
sumber
(p=@isprime)(x)&p(nnz(primes(x)))
Python 2 , 89 byte
Cobalah online!
Konstruksi
r
, daftar bilangan prima <= n; jika n adalah prima, makan
adalahlen(r)
'prime th. Jadi n adalah super prima iff n in r dan len (r) di r.sumber
Python 2 , 79 byte
Cobalah online!
sumber
Julia 0,6, 61 byte
kembalikan 1 jika x adalah super-prime, 0 sebaliknya.
tanpa menggunakan fungsi isprime.
sumber