Untuk tujuan tantangan ini, Kekuatan Utama Perdana (PPP) didefinisikan sebagai angka yang dapat didefinisikan sebagai bilangan prima dengan kekuatan bilangan prima. Misalnya, 9 adalah PPP karena dapat direpresentasikan sebagai 3 ^ 2. 81 di sisi lain bukan PPP karena hanya dapat direpresentasikan sebagai 3 ^ 4, dan 4 tidak prima. Beberapa PPP pertama adalah: 4, 8, 9, 25, 27, 32, 49, 121, 125, 128, 169, 243, 289, 343 ... Ini adalah urutan OEIS A053810
Tugas Anda:
Tulis program atau fungsi yang untuk bilangan bulat input n mengembalikan / menghasilkan PPP ke-n, baik indeks-1 atau indeks-0, mana saja yang Anda inginkan.
Memasukkan:
Integer antara 0 dan 1.000, diterima melalui metode yang masuk akal.
Keluaran:
PPP pada indeks ditunjukkan oleh input.
Kasus uji:
Ini adalah 1-diindeks, dan jika program Anda mengambil input 0-diindeks, output yang sama harus sampai pada input yang dinyatakan - 1.
3 -> 9
6 -> 32
9 -> 125
Mencetak:
Golf kode ini , skor terendah dalam byte menang!
Jawaban:
05AB1E (lawas) ,
97 byteDisimpan 2 byte terima untuk @KevinCruijssen
Cobalah online!
sumber
»
bukannyaJ
sehingga0\n1
tidak menafsirkan sebagai truthy! Tetapi Anda dapat menyimpan byte dalam versi lawas 05AB1E (yang juga Anda gunakan dalam TIO), dengan menghilangkan½
, karena ini dilakukan secara implisit untukµ
(titik-peluru kedua di ujung tambang 05AB1E ini ). JugaʒĀ}
bisa0K
. 7 byteSekam , 10 byte
Cobalah online!
Penjelasan
sumber
Sebenarnya , 14 byte
Berdasarkan solusi Mr. Xcoder Pyth . Saran golf diterima. Cobalah online!
Tidak melakukanolf
sumber
Mathematica, 48 byte
Cobalah online!
tapi Martin Ender punya ide yang lebih baik dan menyelamatkan 6 byte
Mathematica, 42 byte
Cobalah online!
sumber
Union
bukanJoin
untuk menghindariSort
.Outer
menyimpan byte lebih dariArray
:(Union@@Outer[Power,p=Prime@Range@#,p])[[#]]&
Tuples
bahkan lebih pendek:Sort[Power@@@Prime@Range@#~Tuples~2][[#]]&
Jelly ,
121110 byteTerima kasih 1 byte untuk Dennis.
Cobalah online!
sumber
Angka R +, 57 byte
Cobalah online!
outer
adalah fungsi yang sangat berguna.Cukup yakin ini akan selalu berhasil. Akan membuat argumen formal ketika saya punya waktu.
sumber
Haskell ,
958580 bytes-10 byte berkat @Lynn
-5 byte terima kasih kepada @WillNess
Berbasis 0
Cobalah online!
Penjelasan
sumber
f=(!!)[x|x<-[2..],or[y^e==x|y<-p x,e<-p x]]
menghemat 10 byte.f=(!!)[x|x<-[2..],p<-[[i|i<-[2..x],all((>)2.gcd i)[2..i-1]]],or[y^e==x|e<-p,y<-p]]
. mungkin tidak apa-apa kalau tidak menghitungf=
? (tidak pernah yakin tentang aturannya).f=
tidak boleh dihitung. Jadi itu akan menjadi 80 byte, dengan(!!)[x|x<-[2..],p<-[[i|i<-[2..x],all((>)2.gcd i)[2..i-1]]],or[y^e==x|e<-p,y<-p]]
.Python 2 ,
163157137136 byteinput()
daripada mendefinisikan suatu fungsi.Cobalah online!
sumber
i=[]
dan....i+=[r]*....
for
r
bukani[p]
Pyth , 15 byte
Coba di sini! atau Verifikasi lebih banyak kasus uji.
Penjelasan
sumber
Javascript
137133 byte** Algoritma normal (hasil 100 ms) P = n => {
sumber
APL (Dyalog Extended) , 15 byte
Cobalah online!
Penjelasan
sumber
Perl 6 , 50 byte
Cobalah online!
Alasan untuk 24 dan 7028 adalah bahwa nilai terbesar (n = 1000) adalah 49378729, yaitu 7027 ^ 2, dan kekuatan prima terbesar 2 yang sesuai dengan itu adalah 23. Jadi mencakup 2..7027 ^ 2 .. 23 termasuk semua item dalam 1000 pertama (dan banyak suku cadang).
sumber
Pyth - 13 byte
Test Suite .
sumber
PARI / GP, 48 byte
Jika Anda tidak menghitung
f(n)=
bagian, itu adalah 43 byte.Pendekatan lain tanpa notasi yang tidak memeriksa banyak kasus yang tidak perlu:
sumber
Java 8, 211 byte
Metode yang sangat tidak efisien .. Pada dasarnya menghitung semua PPP dari 2 2 hingga
999 999132 132 dan menyimpannya dalam Daftar, lalu mengurutkan Daftar itu, dan kemudian mendapatkann
item ke-10 dari Daftar itu.EDIT: Alih-alih menggunakan 999 999 yang menghasilkan Daftar 28.225 item, saya sekarang menggunakan 132 132 yang menghasilkan Daftar hanya 1.024 item. Ini meningkatkan kinerja sedikit, dan sangat dapat diterima karena tantangan menyatakan kita harus mendukung input dari indeks 0 hingga 1.000. (Namun, mengubah
1e3
ke132
tidak memengaruhi byte-byte.)Penjelasan:
Coba di sini.
sumber
J, 21 byte
Fungsi anonim yang diindeks nol.
Cobalah online!
Mencoba untuk kembali ke ayunan hal-hal tetapi saya tampaknya telah melupakan semua trik untuk membuat rantai monadik yang baik.
Penjelasan singkat
Buat tabel kekuatan prima dari perdana ke-0 ke perdana pada indeks input plus 1 (untuk memperhitungkan 0). Ratakan daftar ini dan urutkan dan kemudian indeks ke dalamnya. Saya menyadari sekarang bahwa ini mungkin memberikan hasil yang salah untuk beberapa nilai karena tabel mungkin tidak cukup besar - dalam hal ini saya akan mengedit dalam nilai hardcoded seperti 1e4 yang sudah cukup. Saya tidak dapat membuktikannya dengan satu atau lain cara (lolos untuk test case yang diberikan), jadi beri tahu saya jika ini merupakan masalah.
Juga 21 byte
sumber