Intro
Membalik dan menambahkan sesederhana kedengarannya, ambil n
dan tambahkan ke digitnya dalam urutan terbalik. (mis. 234 + 432 = 666).
Jika Anda menerapkan proses ini berulang kali beberapa angka pada akhirnya akan mencapai angka prima, dan beberapa tidak akan pernah mencapai angka prima.
Contoh
Saat ini saya punya
11431 rep.
11431 is not prime
11431 + 13411 = 24842 which is not prime
24842 + 24842 = 49684 which is not prime
49684 + 48694 = 98378 which is not prime
98378 + 87389 = 185767 which is prime!
Jumlah ini mencapai prima
Sebaliknya setiap kelipatan dari 3 tidak akan pernah mencapai prima, ini karena semua kelipatan dari 3 memiliki jumlah digit yang merupakan kelipatan dari 3 dan sebaliknya. Dengan demikian membalikkan dan menambahkan kelipatan 3 akan selalu menghasilkan kelipatan baru 3 dan karenanya tidak pernah prima.
Tugas
Ambil bilangan bulat positif n
dan tentukan apakah pembalikan berulang dan penambahan akan menghasilkan bilangan prima. Keluarkan nilai yang benar atau salah. Entah kebenaran untuk mencapai nilai prima dan palsu untuk tidak atau sebaliknya keduanya dapat diterima.
Bilangan prima akan dianggap mencapai bilangan prima dalam iterasi nol.
Ini kode-golf, jadi cobalah membuat kode Anda sesingkat mungkin.
Uji Kasus
Benar untuk mencapai yang utama salah untuk tidak pernah mencapai yang utama
11 -> True
11431 -> True
13201 -> True
13360 -> True
13450 -> True
1019410 -> True
1019510 -> True
22 -> False
1431 -> False
15621 -> False
14641 -> False
Petunjuk
Sementara saya menulis tantangan ini, saya menemukan trik keren yang membuat masalah ini jauh lebih mudah. Bukan tidak mungkin tanpa trik ini dan juga tidak sepele dengan trik ini, tetapi itu memang membantu. Saya sangat senang menemukan ini jadi saya akan membiarkannya di spoiler di bawah ini.
Terbalik terbalik dan tambah akan selalu menekan kelipatan 11 dalam 6 iterasi atau kurang. Jika tidak mencapai prime sebelum mencapai multiple 11, itu tidak akan mencapai prime.
sumber
Jawaban:
Ruby ,
84 79 7774 byteCobalah online!
sumber
Haskell , 65 byte
f
mengambilInteger
dan mengembalikan aBool
.True
berarti mencapai puncak.Cobalah online!
Sayangnya tes prime pendek tapi tidak efisien berarti bahwa
True
kasus uji OP selain11
tumbuh terlalu besar untuk diselesaikan. Tetapi misalnya 11432 adalahTrue
kasus yang selesai.Anda juga dapat mencoba ini 3 byte lebih lama, yang TIO dapat menyelesaikan semua
True
kasus uji:Cobalah online!
Tes utama kedua versi 'istirahat pada 1, tetapi kebetulan itu sampai ke prima (2).
Kalau tidak, saya perhatikan tentang hal yang sama dengan GB di spoiler pengiriman Ruby:
sumber
Python 2,
123110 byteDisimpan 13 byte berkat Ørjan Johansen dan Wheat Wizard !
Mengembalikan 1 jika mencapai prime, 0 jika tidak. Cobalah online!
sumber
Python 2 ,
787069 byteCobalah online!
Penjelasan
Program ini mengandalkan fakta bahwa
Program ini adalah lambda rekursif dengan komparatif logis yang digerakkan. Pertama-tama memeriksa apakah n adalah prima.
Jika ini benar, kami mengembalikan benar.
Jika itu salah, kami memeriksa apakah kelipatannya 11.
Jika false, kita mengembalikan false, jika tidak kita mengembalikan hasil
f
pada iterasi berikutnyasumber
Jelly , 11 byte
Cobalah online!
sumber
S
bisa menjadiT
juga.RD$+$
bisa juga+RD$$
atauRD+<newline>Ç
(semua modifikasi sepele)S
karena memiliki sedikit kesempatan untuk menunjukkan sesuatu> 1. Tidak adaRD
, adilṚḌ
, dan saya memilihṚḌ$+$
sehingga saya bisa mengaturnya dengan lebih baik.S
; Saya seharusnya memilih ituT
, tapi itu kebanyakan untuk kepentingan orang lain.05AB1E ,
1413 byteEDIT : Disimpan satu byte karena input digunakan kembali jika tidak ada cukup elemen pada stack
Cobalah online!
Gunakan petunjuk dalam pertanyaan
Bagaimana itu bekerja
sumber
MATLAB,
8881 bytesumber
JavaScript (ES6), 73 byte
Pengembalian
0
atautrue
.Berkomentar
Ini didasarkan pada formula spoiler-ajaib yang dijelaskan oleh Wheat Wizard.
Uji kasus
Saya telah menghapus dua input terbesar dari cuplikan, karena perlu beberapa detik untuk menyelesaikannya. (Tapi mereka berhasil juga.)
Tampilkan cuplikan kode
sumber
Mathematica, 45 byte
sumber
Microsoft Sql Server,
826786 * byte* Saya ingat tentang fungsi IIF yang diperkenalkan di Microsoft Sql Server 2012
Periksa secara online
Pemformatan lebih rapi
sumber
/*true*/
dan/*false*/
komentar?Jelly , 9 byte
Cobalah online!
Bagaimana itu bekerja
sumber
PHP 114 byte
Versi yang lebih mudah dibaca:
Cobalah online!
Saya menggunakan hal ini untuk menghitung byte.
sumber