Sebuah emirp adalah bilangan prima non-palindrom yang, jika dibalik, juga bilangan prima.
Daftar emirps 10 basis dapat ditemukan di OEIS . Enam yang pertama adalah:
13, 17, 31, 37, 71, 73
Namun, karena aturan pembalikan, emir berbeda di setiap basis. Sebagai contoh, enam emirps biner pertama adalah:
Bin | 1011, 1101, 10111, 11101, 101001, 100101
Dec | (11 , 13 , 23 , 29 , 37 , 41 )
... dan dalam heksadesimal, mereka adalah:
Hex | 17, 1F, 35, 3B, 3D, 53
Dec | (23, 31, 53, 59, 61, 83)
Fakta Menarik: tidak ada emirp di unary karena setiap angka adalah palindrom.
Tantangan
Tugas Anda adalah membuat fungsi (atau program lengkap) yang mengambil dua parameter, dan , dan menghasilkan daftar emirps pertama di basis .
Aturan / Detail:
- b 0 dan keduanya bilangan bulat positif lebih besar dari .
- Anda dapat mengasumsikan : artinya, basisnya adalah antara biner dan heksadesimal.
- Anda harus dapat menghitung nilai hingga .100
- Daftar yang dihasilkan dapat berada di basis , atau basis integer standar bahasa Anda, selama Anda menentukannya dalam jawaban Anda.
- Pemeriksaan emirp bawaan tidak diizinkan (tes bawaan bawaan baik-baik saja)
- Anda tidak dapat membuat hard-code emirps, atau membaca dari file eksternal apa pun.
- Celah standar dilarang, seperti biasa.
- Ini adalah kode-golf , jadi jawaban tersingkat (dalam byte) menang.
Uji Kasus
Untuk setiap kasus uji, saya telah memasukkan daftar dalam basis b
dan 10 padanan dasarnya.
B = 2, N = 10
BIN: [1011, 1101, 10111, 11101, 100101, 101001, 101011, 101111, 110101, 111101]
DEC: [11, 13, 23, 29, 37, 41, 43, 47, 53, 61]
B = 3, N = 5
BASE3: [12, 21, 102, 201, 1011]
DEC: [5, 7, 11, 19, 31]
B = 12, N = 7
BASE12: [15, 51, 57, 5B, 75, B5, 107]
DEC: [17, 61, 67, 71, 89, 137, 151]
B = 16, N = 4
HEX: [17, 1F, 35, 3B]
DEC: [23, 31, 53, 59]
Anda dapat menguji program Anda lebih lanjut terhadap contoh Python (ungolfed) saya di repl.it
sumber
05AB1E , 17 byte
Menggunakan pengodean CP-1252 .
Urutan input adalah
n, b
Output dalam basis-10.
Cobalah online!
Penjelasan
sumber
Mathematica, 70 byte
Bekerja untuk
0 <= n <= 100
dan2 <= b <= 16
. Dari daftarPrime@Range@437
yang pertama437
bilangan prima, menemukanCases
p
di manaIntegerReverse
r
darip
dalam basis#2
tidak sama denganp
dan juga perdana, kemudian mengambil yang pertama#
sepertip
.Inilah solusi 95 byte yang berfungsi untuk arbitrary
n>=0
danb>=2
:sumber
IntegerReverse
. Tentu saja! Bagus.Reap
diizinkan di catatan kaki:For[i=j=0,j<#,If[(r=IntegerReverse[p=Prime@++i,#2])!=p&&PrimeQ@r,j++;Sow@p]]&
Perl, 262 byte
Dapat dibaca:
c
mengubah angka tertentu menjadi basis$b
, dand
mengonversi angka tertentu dari basis$b
kembali ke desimal dengan menemukan angka pertama yang mengembalikan$b
angka dasar tersebut ketika diteruskan kec
. Untuk loop kemudian memeriksa apakah itu sebuah palindrom dan apakah kedua angka prima menggunakan regex komposit.sumber
Mathematica 112 byte
Contoh
Temukan 10 Emips pertama dalam hex; kembalikan dalam desimal.
Tidak disatukan
sumber
Perl 6 , 91 byte
Mengembalikan daftar emirp di basis 10.
sumber
Python 3 ,
232214191188 byteCobalah online!
sumber
C,
293286261 byteDitingkatkan oleh @ceilingcat , 261 byte:
Cobalah online!
(Orang ini seperti terus-menerus mengikuti saya di sekitar PPCG dan memperbaiki barang-barang saya di komentar, dan segera setelah saya membalas terima kasih dia hanya menghapus komentar dan menghilang lol. Welp, terima kasih lagi!)
Ditingkatkan oleh @movatica , 286 byte:
Cobalah online!
Jawaban asli saya, 293 byte:
Kompilasi dengan
gcc emirp.c -o emirp -lm
dan jalankan./emirp <b> <n>
. Mencetak emirps yang dipisahkan oleh ruang pada basis-10.sumber
JavaScript (ES6),
149148141140 byteMengembalikan daftar emirps yang dipisahkan ruang dalam basis b. (Bisa lebih pendek 2 byte dengan mengembalikan daftar desimal.)
Uji kasus
Tampilkan cuplikan kode
sumber
Python 2 , 133 byte
Cobalah online!
Output setiap nomor pada baris baru, di basis 10
sumber
APL (NARS), 87 karakter, 174 byte
Hasilnya akan di basis 10. Tes dan hasil:
{(⍺⍴⍨⌊1+⍺⍟⍵)⊤⍵}
akan melakukan konversi⍵
di basis⍺
, hasil integer array;0π⍵
akan mengembalikan true [1] jika⍵
bilangan prima maka akan mengembalikan 0sumber