Secara khusus, PRIMEGAME Conway .
Ini adalah algoritma yang dirancang oleh John H. Conway untuk menghasilkan bilangan prima menggunakan urutan 14 angka rasional:
A B C D E F G H I J K L M N
17 78 19 23 29 77 95 77 1 11 13 15 15 55
-- -- -- -- -- -- -- -- -- -- -- -- -- --
91 85 51 38 33 29 23 19 17 13 11 14 2 1
Sebagai contoh, F adalah fraksi 77/29
.
Jadi, inilah cara algoritma menemukan bilangan prima. Dimulai dengan angka 2
, cari entri pertama dalam urutan yang ketika dikalikan bersama menghasilkan integer. Berikut ini M
, 15/2
yang menghasilkan 15
. Kemudian, untuk bilangan bulat itu 15
, temukan entri pertama dalam urutan yang ketika dikalikan menghasilkan bilangan bulat. Itu yang terakhir N
,, atau 55/1
, yang menghasilkan 825
. Tulis urutan yang sesuai. (Yang cerdik di antara kamu mungkin mengenali ini sebagai program FRACTRAN .)
Setelah beberapa iterasi, Anda akan mendapatkan yang berikut ini:
2, 15, 825, 725, 1925, 2275, 425, 390, 330, 290, 770, 910, 170, 156, 132, 116, 308, 364, 68, 4 ...
Perhatikan bahwa item terakhir yang tercantum adalah 4
, atau 2^2
. Lihatlah bilangan prima pertama kami ( 2
eksponen) yang dihasilkan dengan algoritma ini! Akhirnya, urutannya akan terlihat seperti berikut:
2 ... 2^2 ... 2^3 ... 2^5 ... 2^7 ... etc.
Jadi, menghasilkan bilangan prima. Ini adalah OEIS A007542 .
Tantangan
Diberikan nomor input n
, baik nol atau satu diindeks (pilihan Anda), baik output n
nomor pertama dari urutan ini, atau output n
nomor ke-5 dari urutan ini.
Contohnya
Contoh di bawah ini mengeluarkan n
istilah th dari urutan nol-diindeks.
n output
5 2275
19 4
40 408
Aturan
- Jika berlaku, Anda dapat mengasumsikan bahwa input / output akan sesuai dengan tipe Integer asli bahasa Anda.
- Input dan output dapat diberikan dengan metode apa pun yang mudah .
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
sumber
408.0
bukannya408
misalnya.Jawaban:
Python 3 ,
173 165 153 145 144 136 135 127 126 125 108 107104 byteCobalah online!
2>>n*2
adalah2
untukn==0
dan0
sebaliknya.103 byte jika kita dapat mengembalikan float.
sumber
FRACTRAN , 99 byte
Cobalah online!
Program mengambil
2*31^n
sebagai input, yang digunakan sebagai keadaan awal.Semua fraksi dalam program FRACTRAN asli telah dibagi dengan 31 (register prima pertama yang tidak digunakan), sehingga program berhenti pada iterasi ke-9.
sumber
Jelly ,
4943 byteCobalah online!
sumber
0ọ0¤
adalahinf
, jika Anda bisa mengurangi ini untuk 42 byte ...Python 3 , 107 byte
Cobalah online!
Mengkodekan daftar fraksi dengan
zip
memasukkan dua bytestrings yang mengandung karakter ASCII rendah yang tidak patut.Jika
n
nol, kami mengembalikan argumenk
; kalau tidak, kita kambuh dengan parameter baru. Nilai baru kamik
adalah nilai pertama yangk*a//b
terkait dengan beberapa fraksi(a, b)
dalam daftar sedemikian rupa sehinggak*a//b
merupakan bilangan bulat, yaituk*a%b<1
.sumber
MATL , 50 byte
Cobalah online!
sumber
Hi:
... aww, "Halo" kepada Anda juga, kode. :-)J ,
116110 byteCobalah online!
0 diindeks; mengembalikan nomor ke-n
Beberapa byte dapat disimpan dengan membuat kata kerja diam-diam, tapi saya punya masalah dalam membuat
^:
pekerjaan.Penjelasan:
J menjelaskan bilangan rasional dalam bentuk NrD, di mana N adalah pembilang dan D adalah penyebut, misalnya
17r91 78r85 19r51 23r38...
saya membuat 2 daftar terpisah untuk pembilang dan penyebut dan membuat 2 basa-96 angka dari mereka.1047856500267924709512946135x%&(96#.inv])5405040820893044303890643137x
mengonversi angka-angka dasar-96 menjadi daftar dan menyusun daftar pecahan dengan membuka dua daftar.2
mulai dengan 2^:y
ulangi kata kerja din
waktu kirinya (y adalah argumen untuk fungsi)]
argumen yang benar (mulai dari 2, dan kemudian menggunakan hasil dari setiap iterasi)*
gandakan daftar fraksi dengan argumen yang benar(=<.)
adalah bilangan bulat hasil (bandingkan setiap angka dengan lantainya){.@I.@
menemukan indeksI.
yang pertama{.
dari bilangan bulat{[
menggunakan indeks untuk mengambil nomor tersebutsumber
('0m26<l~l *,..V'%&(31x-~3&u:)'ztRE@<620,*-! ')&(0{*#~0=1|*)2:
05AB1E ,
4443 byteDiindeks 0
Cobalah online!
Penjelasan
Jumlah besar yang didorong adalah
17781923297795770111131515559185513833292319171311140201
sumber
Pari / GP , 121 byte
Cobalah online!
sumber
JavaScript (Node.js) ,
10695 byteCobalah online!
sumber
Buffer
. Juga, saya pikir aman untuk meletakkan semua data dalam satu buffer: 95 byte .Retina , 213 byte
Cobalah online! Penjelasan:
Ganti input dengan daftar semua fraksi, ditambah bilangan bulat awal.
Konversikan semuanya menjadi unary.
Ulangi substitusi beberapa kali yang diberikan oleh input asli.
Temukan penyebut yang membagi bilangan bulat secara merata.
Ganti bilangan bulat dengan hasil pembagian dikalikan dengan pembilang.
Ubah bilangan bulat menjadi desimal dan hasilkan hasilnya.
sumber
Attache , 81 byte
Cobalah online! Menghasilkan sebagian kecil dari 1. Misalnya, input
5
kembali2275/1
. Ini dapat diperbaiki dengan ditambah 2 byte dengan menambahkanN@
ke program.Penjelasan
Ini adalah fungsi kari, yang kari
Nest
dengan dua argumen yang telah ditentukan:dan
2
. Argumen terakhir ini hanyalah benih awal, dan argumen yang diteruskan ke fungsi ini adalah jumlah iterasi untuk membuat sarang fungsi yang diberikan.Berikut ini digunakan untuk menyandikan PRIMEGAME:
Ini dievaluasi sebagai berikut:
Mari kita ganti ungkapan ini dengan
G
penjelasannya. Fungsi pertama kami menjadi:Ini melakukan iterasi tunggal dari kode FRACTRAN
_
, input ke fungsi. IniFind
adalahIntegral
anggota (yang merupakan integer) dari array_*G
, yang merupakan input yang_
dikalikan dengan masing-masing anggotaG
.Nest
cukup menerapkan transformasi ini beberapa kali.Attache, 42 byte
Saya menerapkan bagian
$langs
perpustakaan, terinspirasi oleh tantangan ini, jadi saya tandai bagian ini tidak bersaing.Ini hanya menanyakan daftar yang
FRACTRAN_EXAMPLES
saya miliki. Setiap contoh adalah sebuahFractranExample
instance, yang memanggilFRACTRAN
fungsi inbuilt . Theprime
contoh adalah PRIMEGAME Conway.sumber
F # (Mono) , 215 byte
Cobalah online!
sumber
PHP, 183 byte (189 dengan tag "php")
Golf:
Tidak Disatukan:
Cobalah online!
sumber