Diberikan bilangan bulat positif n keluaran bilangan bulat a dan b (membentuk pecahan tereduksi a / b ) sedemikian rupa sehingga:
Di mana p k adalah bilangan prima k th (dengan p 1 = 2).
Contoh:
1 -> 3, 5
2 -> 12, 25
3 -> 144, 325
4 -> 3456, 8125
5 -> 41472, 99125
15 -> 4506715396450638759507001344, 11179755611058498955501765625
420 -> very long
Pemeriksaan prime probabilistik diperbolehkan, dan tidak apa-apa jika jawaban Anda gagal karena keterbatasan dalam tipe integer bahasa Anda.
Kode terpendek dalam byte menang.
code-golf
arithmetic
orlp
sumber
sumber
3.0
bukan3
?a
danb
sebagai tipe rasional?Jawaban:
M. , 9 byte
Cobalah online!
Hal sepele
Temui M!
M adalah garpu Jelly, yang ditujukan untuk tantangan matematika. Perbedaan utama antara Jelly dan M adalah bahwa M menggunakan presisi tak terbatas untuk semua perhitungan internal, yang mewakili hasil secara simbolis. Setelah M lebih matang, Jelly akan secara bertahap menjadi lebih multi-guna dan kurang berorientasi pada matematika.
M sangat banyak pekerjaan yang sedang berjalan (penuh bug, dan tidak juga - berbeda dari Jelly sekarang), tetapi bekerja seperti pesona untuk tantangan ini dan saya tidak bisa menahannya.
Bagaimana itu bekerja
sumber
ÆN
satu-satunya operator spesifik M? Also MellyMathematica, 32 byte
Fungsi tanpa nama yang mengambil input integer dan mengembalikan pecahan sebenarnya.
Ini menggunakan fakta bahwa . Kode ini kemudian di-golf berkat fakta bahwa Mathematica mengaitkan semua aritmatika dasar ke daftar. Jadi pertama-tama kita membuat daftar , lalu mengambil semua bilangan prima dan pasang daftar itu ke dalam ekspresi di atas. Ini memberi kita daftar semua faktor. Akhirnya, kami melipatgandakan semuanya bersama-sama dengan mendaftar ke daftar, yang dapat di-golf-kan
(p2-1)/(p2+1) = 1-2/(p2+1)
{1, 2, ..., n}
Times
1##&
.Atau, kita dapat menggunakan
Array
untuk jumlah byte yang sama:sumber
1-2
=1
benar?-1
sebenarnya), tapi1-2/x ≠ -1/x
. ;)@Range@
±~Array~
Python 2, 106 byte
Baris pertama dan keempat sangat menyakitkan ... hanya saja ternyata menggunakan
Fraction
lebih baik daripada mengalikan secara terpisah dan menggunakangcd
, bahkan dengan Python 3.5+ di managcd
beradamath
.Generasi perdana diadaptasi dari jawaban @ xnor di sini , yang menggunakan teorema Wilson.
sumber
Ruby,
1227765 byteTerima kasih kepada Sherlock karena telah mengurangi 10 byte.
Menentukan fungsi anonim yang mengambil angka dan mengembalikan a
Rational
.sumber
PARI / GP , 33 byte
Versi alternatif (46 byte):
Versi yang tidak bersaing memberikan hasil floating-point (
t_REAL
) (38 byte):sumber
Jelly ,
1413 byteCobalah online! Terima kasih kepada @ Dennis untuk -1 byte.
sumber
Pyth,
2625Cobalah di sini atau jalankan Test Suite .
1 byte disimpan berkat Jakube!
Implementasi spesifikasi yang cukup naif. Menggunakan spiffy "baru" (Saya tidak tahu kapan ini ditambahkan, tapi saya belum pernah melihatnya sebelumnya)
P<neg>
yang mengembalikan apakah nilai positif dari angka negatif adalah prima atau tidak. Beberapa pemetaan, dll mungkin bisa di-golf ...sumber
Julia,
5942 byteIni adalah fungsi anonim yang menerima bilangan bulat dan mengembalikan
Rational
denganBigInt
pembilang dan penyebut.Kita mulai dengan membuat daftar bilangan prima kurang dari 2 n 2 dan memilih elemen n pertama . Ini bekerja karena n th prime selalu kurang dari n 2 untuk semua n > 1. ( Lihat di sini .)
Untuk setiap p dari n bilangan prima yang dipilih, kita kuadratkan p menggunakan kekuatan elementwise (
.^2
), dan membangun rasional 2 / ( p + 1), di mana 2 pertama dikonversi menjadiBigInt
untuk memastikan presisi yang cukup. Kami kurangi ini dari 1, ambil produk dari susunan rasional yang dihasilkan, dan kembalikan rasional yang dihasilkan.Contoh penggunaan:
Disimpan 17 berkat Sp3000!
sumber
Cembung, 28 byte
Convex adalah bahasa baru yang saya kembangkan yang sangat didasarkan pada CJam dan Golfscript. Interpreter dan IDE dapat ditemukan di sini . Input adalah bilangan bulat ke argumen baris perintah. Indeks berbasis satu. Menggunakan pengkodean CP-1252.
Anda mungkin atau mungkin tidak menganggap jawaban ini bersaing karena saya sedang mengerjakan beberapa fitur yang digunakan program ini sebelum tantangan diposting, tetapi komit dibuat setelah saya melihat tantangan ini keluar.
sumber
MATL , 18 byte
Cobalah online!
Gagal untuk input besar karena hanya bilangan bulat hingga
2^52
dapat diwakili secara akurat secara internal.Penjelasan
sumber
Mathematica, 45 byte
Bilangan prima? Pecahan? Mathematica.
sumber
Haskell, 53 byte
Fungsi anonim, 53 karakter:
Coba di sini (catatan: di GHCi standar, Anda harus terlebih dahulu memastikan
Data.Ratio
danData.List
diimpor):Pengindeksan daftar Haskell
!!
berbasis 0.(___!!)
adalah bagian operator , membentuk fungsi anonim sehingga(xs !!) n == xs !! n
.Ini kurang empat byte untuk menghasilkan seluruh urutan:
sumber
Serius, 25 byte
Output
a\nb
(\n
adalah baris baru). Input besar akan memakan waktu lama (dan mungkin gagal karena kehabisan memori) karena generasi utama sangat lambat.Cobalah online!
Penjelasan:
sumber