Integer adalah prima jika dan hanya jika itu positif dan memiliki tepat 2 pembagi yang berbeda: 1 dan itu sendiri. Sepasang prime kembar terbuat dari dua elemen: p
dan p±2
, keduanya adalah prime.
Anda akan diberikan bilangan bulat positif sebagai input. Tugas Anda adalah mengembalikan kebenaran / kepalsuan tergantung pada apakah bilangan bulat yang diberikan milik pasangan kembar, mengikuti standar keputusan aturan (nilai-nilai harus konsisten).
Uji Kasus
Truthy (Twin Primes):
3, 5, 7, 11, 13, 17, 19, 29, 31, 41, 43
Falsy (bukan Twin Primes):
2, 15, 20, 23, 37, 47, 97, 120, 566
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
code-golf
number
decision-problem
primes
Taylor Scott
sumber
sumber
Jawaban:
Brachylog ,
98 byteCobalah online!
Penjelasan
sumber
√
Penggunaan pintar ! +1Jelly ,
109 byteCobalah online!
Latar Belakang
Dengan pengecualian (3, 5) , semua pasangan utama kembar berbentuk (6k - 1, 6k + 1) .
Sejak (6k - 1) + (6k - 1)% 6 - 3 = 6k - 1 + 5 - 3 = 6k + 1 dan
(6k + 1) + (6k + 1)% 6 - 3 = 6k + 1 + 1 - 3 = 6k - 1 , diberi input n> 3 , cukup untuk memeriksa apakah n dan n + n% 6 - 3 keduanya prima.
Formula ini terjadi kerja untuk n = 3 juga, seperti 3 + 3% 6-3 = 3 adalah bilangan prima dan 3 adalah prima kembar.
Bagaimana itu bekerja
sumber
Python 3 , 53 byte
Cobalah online!
Latar Belakang
Semua bilangan bulat mengambil salah satu dari formulir berikut, dengan bilangan bulat k : 6k - 3 , 6k - 2 , 6k - 1 , 6k , 6k + 1 , 6k + 2 .
Karena 6k - 2 , 6k , dan 6k + 2 semuanya genap, dan karena 6k - 3 dapat dibagi dengan 3 , semua bilangan prima kecuali 2 dan 3 harus dalam bentuk 6k - 1 atau 6k + 1 . Karena perbedaan pasangan prime kembar adalah 2 , dengan pengecualian (3, 5) , semua pasangan prime kembar berbentuk (6k - 1, 6k + 1) .
Biarkan n dalam bentuk 6k ± 1 .
Jika n = 6k -1 , maka n + n% 6 - 3 = 6k - 1 + (6k - 1)% 6 - 3 = 6k - 1 + 5 - 3 = 6k + 1 .
Jika n = 6k + 1 , maka n + n% 6 - 3 = 6k + 1 + (6k + 1)% 6 - 3 = 6k + 1 + 1 - 3 = 6k - 1 .
Jadi, jika n adalah bagian dari pasangan kembar utama dan n ≠ 3 , kembarannya adalah n + n% 6 - 3 .
Bagaimana itu bekerja
Python tidak memiliki tes primality bawaan. Meskipun ada cara-cara singkat untuk menguji satu nomor untuk primality, melakukannya untuk dua nomor akan panjang. Kami akan bekerja dengan pembagi.
menghitung berapa bilangan bulat k dalam interval [2, 4n) yang membagi (n + n% 6 - 3) n secara merata, yaitu, menghitung jumlah pembagi dari (n + n% 6 - 3) n dalam interval [2 , 4n) . Kami mengklaim bahwa penghitungan ini adalah 2 jika dan hanya jika n adalah bagian dari pasangan utama kembar.
Jika n = 3 (prima kembar), (n + n% 6 - 3) n = 3 (3 + 3 - 3) = 9 memiliki dua pembagi ( 3 dan 9 ) dalam [2, 12) .
Jika n> 3 adalah prima kembar, seperti yang terlihat sebelumnya, m: = n + n% 6 - 3 adalah kembarannya. Dalam hal ini, mn memiliki tepat empat pembagi: 1, m, n, mn .
Sejak n> 3 , kita memiliki m> 4 , jadi 4n <mn dan tepat dua pembagi ( m dan n ) masuk dalam interval [2, 4n) .
Jika n = 1 , maka (n + n% 6 - 3) n = 1 + 1 - 3 = -1 tidak memiliki pembagi dalam [2, 4) .
Jika n = 2 , maka (n + n% 6 - 3) n = 2 (2 + 2 - 3) = 2 memiliki satu pembagi (sendiri) dalam [2, 8) .
Jika n = 4 , maka (n + n% 6 - 3) n = 4 (4 + 4 - 3) = 20 memiliki empat pembagi ( 2 , 4 , 5 , dan 10 ) dalam [2, 16) .
Jika n> 4 genap, 2 , n / 2 , dan n semua membagi n dan, oleh karena itu, (n + n% 6 - 3) n . Kami memiliki n / 2> 2 sejak n> 4 , jadi setidaknya ada tiga pembagi dalam [2, 4n) .
Jika n = 9 , maka (n + n% 6 - 3) n = 9 (9 + 3 - 3) = 81 memiliki tiga pembagi ( 3 , 9 , dan 21 ) dalam [2, 36) .
Jika n> 9 adalah kelipatan dari 3 , maka 3 , n / 3 , dan n semua membagi n dan, karenanya, (n + n% 6 - 3) n . Kami memiliki n / 3> 3 sejak n> 9 , jadi setidaknya ada tiga pembagi dalam [2, 4n) .
Akhirnya, jika n = 6k ± 1> 4 bukan prime kembar, baik n atau m: = n + n% 6 - 3 harus komposit dan, oleh karena itu, akui pembagi yang tepat d> 1 .
Karena n = m + 2 atau m = n + 2 dan n, m> 4 , bilangan bulat d , m , dan n adalah pembagi yang berbeda dari mn . Selanjutnya, m <n + 3 <4n sejak n> 1 , jadi mn memiliki setidaknya tiga pembagi dalam [2, 4n) .
sumber
05AB1E ,
109 byteDisimpan 1 byte berkat Datboi
Cobalah online! atau sebagai Test Suite
Penjelasan
sumber
ÌIÍ‚
sebagai ganti40SÍ+
-1 bytePHP, 52 byte
tanpa GMP, 84 byte
(menggunakan fungsi utama saya dari stack overflow )
Jalankan sebagai pipa dengan
-nF
. Keluaran kosong untuk kepalsuan,1
untuk kebenaran.Solusi hebat Dennis porting ke PHP, 56 byte
Jalankan sebagai pipa dengan
-nR
atau coba online .sumber
Mathematica, 33 byte
Cobalah online!
sumber
MATL , 11 byte
Output adalah
0
atau1
.Cobalah online!
Penjelasan
sumber
Pyth ,
14 1211 byteTest Suite.
Disimpan 3 byte menggunakan rumus dalam jawaban @Dennis. Disimpan 1 byte berkat @Dennis.
Pyth , 14 byte * Solusi Awal
Test Suite.
sumber
Retina ,
4544 byteMengembalikan 1 jika inputnya adalah kembar prime, 0 sebaliknya
Cobalah online!
Penjelasan
Konversikan ke Unary
Letakkan n-2, n, dan n + 2 pada baris mereka sendiri
(Mengikuti baris baru) Hapus semua komposit yang lebih besar dari 1
Periksa apakah ada dua bilangan prima berturut-turut (atau 1,3 karena 3 adalah bilangan prima kembar)
sumber
Perl 6 , 24 byte
Cobalah online!
*
adalah argumen untuk fungsi anonim ini.0 & (-2 | 2)
adalah persimpangan yang terdiri dari angka0
DAN baik-2
OR2
. Menambahkan*
ke persimpangan ini menghasilkan persimpangan nomor*
DAN salah satu dari angka* - 2
ATAU* + 2
. Memanggilis-prime
metode pada persimpangan ini mengembalikan nilai kebenaran jika*
prima DAN* - 2
OR* + 2
atau prima. Akhirnya,?
runtuh persimpangan kebenaran ke nilai boolean, memuaskan kondisi nilai-kembali konsisten.sumber
JavaScript,
91 byte, 81 byte terima kasih kepada Jared SmithPenjelasan
p
memberitahu apakah angka yang diberikann
adalah prima atau tidak, dant
tes nomor yang diberikann
dann±2
.Contoh
Tampilkan cuplikan kode
sumber
var
, tanda kurung din
dalam definisi fungsi, dll.n
di samping nilait(n)
kejelasan yang meningkat (Eg.7: true
)J, 23 byte
Cobalah online!
bagaimana?
sumber
3>0#.@p:0 2 _2&+
05AB1E , 8 byte
Port of Dennis 'Jelly menjawab
Cobalah online! atau sebagai Test Suite
Penjelasan
sumber
Ruby, 38 + 6 = 44 byte
Membutuhkan opsi
-rprime
.Cobalah online!
sumber
&
bukannya&&
JavaScript (ES6), 54 byte
Tampilkan cuplikan kode
sumber
Excel VBA,
102100 BytesTidak ada built-in primality untuk VBA :(
Kode
Fungsi jendela langsung VBE anonim yang mengambil input dari sel
[A1]
dan output baik1
(benar) atau0
(salah) ke jendela Segera VBEFungsi Penolong
Atau, 122 Bytes
Kode
Solusi berbasis fungsi pemeriksaan primitif rekursif
Fungsi Penolong
sumber
PHP, 85 byte 24 byte berkat Mayube
sumber
a
Danb
)function
kata kunci lagi?Python 2 , 75 byte
Cobalah online!
sumber
Japt , 13 byte
Pengembalian
true
danfalse
untuk apakah nomor tersebut merupakan bagian dari pasangan kembar utama.Cobalah online!
Penjelasan
Tersirat:
U
= input integerPeriksa apakah inputnya prima (
j
), DAN (©
) ...Menggunakan array
[U+2, U-2]
, periksa apakah ada item yang benar (d
) sesuai dengan fungsi primality (j
).Output implisit dari hasil boolean dari
is input prime AND is any ±2 neighbor prime
.sumber
[U+2U-2]
bisa lebih pendek, tapi saya tidak tahu bagaimana ...