The Cluster utama dari integer N lebih tinggi dari 2 didefinisikan sebagai pasangan yang dibentuk oleh perdana tertinggi ketat lebih rendah dari N dan terendah perdana ketat lebih tinggi dari N .
Perhatikan bahwa mengikuti definisi di atas, jika bilangan bulat adalah bilangan prima itu sendiri, maka kluster prima adalah pasangan bilangan prima sebelum dan menggantikannya .
Tugas
Diberikan dua bilangan bulat bilangan bulat N , M ( N, M ≥ 3 ), menghasilkan nilai kebenaran / kepalsuan berdasarkan apakah N dan M memiliki gugus utama yang sama.
Ini adalah kode-golf , jadi tujuannya adalah untuk mengurangi jumlah byte Anda sebanyak mungkin. Dengan demikian, kode terpendek dalam setiap bahasa pemrograman menang.
Uji kasus / Contoh
Misalnya, gugus utama 9 adalah [7, 11]
, karena:
- 7 adalah prime tertinggi yang lebih rendah dari 9 , dan
- 11 adalah prime terendah yang lebih tinggi dari 9 .
Demikian pula, kluster utama 67 adalah [61, 71]
(perhatikan bahwa 67 adalah prima).
Pasangan yang benar
8, 10 20, 22 65, 65 73, 73 86, 84 326, 318 513, 518
Pasangan palsu
4, 5 6, 8 409, 401 348, 347 419, 418 311, 313 326, 305
sumber
Jawaban:
Jelly ,
64354 byteCobalah online! atau Coba semua test case .
Bagaimana itu bekerja
Berfungsi karena dua angka memiliki cluster prima yang berbeda jika ada prima di antara mereka, atau salah satu angka itu sendiri prima; kecuali kedua angka sama, dalam hal ini tetap
E
kembali1
(semua item dalam array satu item sama).sumber
Perl 6 , 52 byte
Menguji
Diperluas:
sumber
Python 3 ,
1039591 byteCobalah online!
sumber
Ruby ,
5754 byteCobalah online!
Menggunakan tes primitif regex yang mengerikan dari jawaban saya (yang saya lupa sampai saya mengkliknya) untuk pertanyaan terkait Apakah nomor ini prima? . Karena kita memiliki N, M ≥ 3, cek untuk 1 dapat dihapus dari pola, membuat jumlah byte lebih sedikit daripada menggunakan built-in.
Catatan: Tes primitif regex secara patologis, meriah tidak efisien. Saya percaya itu setidaknya O (n!), Meskipun saya tidak punya waktu untuk memikirkannya sekarang. Butuh dua belas detik untuk memeriksa 100.001, dan menggiling selama lima atau sepuluh menit pada 1.000.001 sebelum saya membatalkannya. Gunakan / penyalahgunaan dengan risiko Anda sendiri.
sumber
n²
. Anda tahu,100001! = 2824257650254427477772164512240315763832679701040485762827423875723843380680572028502730496931545301922349718873479336571104510933085749261906300669827923360329777024436472705878118321875571799283167659071802605510878659379955675120386166847407407122463765792082065493877636247683663198828626954833262077780844919163487776145463353109634071852657157707925315037717734498612061347682956332369235999129371094504360348686870713719732258380465223614176068 ... (Warning: The output exceeded 128 KiB and was truncated.)
yang akan membutuhkan milenia untuk dijalankan.Retina , 58 byte
Cobalah online! Penjelasan:
Jika kedua input sama, cukup hapus semuanya, dan lanjutkan ke output 1 di akhir.
Konversikan ke unary.
Sortir sesuai pesanan.
Perluas ke rentang semua angka.
Hapus semua angka komposit.
Jika tidak ada angka yang tersisa, hasilkan 1, jika tidak 0.
sumber
PARI / GP, 28 byte
Cobalah secara online dengan semua kasus uji!
Pengembalian
0
atau1
(nilai PARI / GP "Boolean" biasa).Penjelasan:
v
harus berupa vektor (atau vektor kolom, atau daftar) dengan dua angkaN
danM
sebagai koordinat. Sebagai contoh[8, 10]
. Makas
akan menjadi "set" yang dibuat dari angka-angka ini, yang dapat berupa vektor satu koordinat (jikaN==M
), atau vektor dua koordinat dengan entri yang diurutkan .Maka jika jumlah
#s
koordinat dalams
hanya satu, kita dapatkan1
(benar). Jika tidak,primes
akan mengembalikan vektor semua bilangan prima dalam interval tertutup daris[1]
kes[2]
. Negasi!
itu akan memberikan1
jika vektor kosong, sementara negasi vektor satu atau lebih entri tidak nol (di sini satu atau lebih bilangan prima) akan memberikan0
.sumber
JavaScript (ES6),
5756 byteMengambil input dalam sintaks currying
(a)(b)
. Pengembalian0
atau1
.Uji kasus
Tampilkan cuplikan kode
Bagaimana?
sumber
R ,
6346 byte-17 oleh Giuseppe
Cobalah online!
Aplikasi yang cukup sederhana dari solusi Jelly ETHProductions . Takeaway menarik utama
adalahbahwa dengan vektor boolean Rany(x)==all(x)
setara denganmin(x)==max(x)
.sumber
numbers
menginstal sebagai gantinyamin(x)==max(x)
sama dengan memeriksa bahwa semua elemen diis_prime(a:b)
sama, kita dapat menggunakan trik terakhir ini untuk turun ke 46 byte dengan paketprimes
ataunumbers
.C (gcc),
153146 byte-7 dari Jonathan Frech
Menentukan fungsi
h
yang mengambil duaint
dan mengembalikan1
untuk kebenaran dan0
untuk falseyCobalah online!
n
adalah fungsi yang mengembalikan 1 jika argumennya tidak prima.g
adalah makro yang menetapkan argumen pertama dan kedua ke prime berikutnya kurang dari dan lebih besar dari (masing-masing) argumen ketigah
tidakg
untuk input dan memeriksa apakah outputnya sama.sumber
return a==c&&b==d;
bisareturn!(a-c|b-d);
.Jelly , 6 byte
Cobalah online!
Terima kasih untuk Dennis .
sumber
APL (Dyalog Unicode) ,
18 + 16 = 3424 byteCobalah online!
Terima kasih kepada Adám selama 10 byte.
Garis
⎕CY'dfns'
( C OP Y ) diperlukan untuk mengimpor dfns ( d inamis f unctio ns ) koleksi, termasuk dengan standar Dyalog APL menginstal.Bagaimana itu bekerja:
sumber
Python 2 ,
8786 byteCobalah online!
sumber
C (gcc) ,
103 byte100 byteCobalah online!
sumber
Haskell , 81 byte
Solusi mudah:
Cobalah online!
sumber
Mathematica,
392726 byteDiperluas:
Pemakaian:
Kontribusi: -12 byte oleh Jenny_mathy , -1 byte oleh Martin Ender
sumber
Equal@@NextPrime[#,{-1,1}]&
ambil sebagai input[{N,M}]
atau jika Anda ingin tetap menggunakan input asli, gunakan 30 byte ini:Equal@@NextPrime[{##},{-1,1}]&
#~NextPrime~{-1,1}
.J , 15 byte
Bagaimana itu bekerja:
Cobalah online!
sumber