Prime adalah lemah jika prime lainnya terdekat lebih kecil dari itu. Jika ada dasi prima tidak lemah.
Misalnya 73 adalah bilangan prima yang lemah karena 71 adalah bilangan prima tetapi 75 adalah komposit.
Tugas
Tulis beberapa kode komputer yang ketika diberi prime lebih besar dari 2 sebagai input akan menentukan apakah itu prime lemah. Ini adalah masalah keputusan standar sehingga Anda harus menampilkan dua nilai unik untuk masing-masing dari dua kasus (misalnya weak
dan not weak
).
Ini adalah kode-golf sehingga aturan standar untuk tag berlaku.
OEIS
Berikut adalah 47 bilangan prima lemah pertama:
3, 7, 13, 19, 23, 31, 43, 47, 61, 73, 83, 89, 103, 109, 113, 131, 139, 151, 167, 181, 193, 199, 229, 233, 241, 271, 283, 293, 313, 317, 337, 349, 353, 359, 383, 389, 401, 409, 421, 433, 443, 449, 463, 467, 491, 503, 509, 523, 547, 571, 577, 601, 619, 643, 647
Berikut adalah OEIS untuk bilangan prima yang lemah (harus kembali weak
) OEIS A051635
Berikut adalah OEIS untuk bilangan prima seimbang (harus kembali not weak
) OEIS A006562
Berikut adalah OEIS untuk bilangan prima yang kuat (harus kembali not weak
) OEIS A051634
sumber
not weak
ataustrong
?Jawaban:
Jelly , 7 byte
Cobalah online!
Penjelasan
Sebagai bonus, mengubah
>
ke=
atau<
cek untuk bilangan prima yang seimbang dan kuat, masing-masing.sumber
>
, bukan?Mathematica, 24 byte
Itu
NextPrime
built-in dapat (ab?) Digunakan untuk menghitung perdana sebelumnya dengan memberi makan argumen negatif.sumber
Jelly , 9 byte
Pengembalian
1
untuk yang lemah dan0
tidak lemah atau seimbang (pengembalian1
untuk input2
)Cobalah online!
Bagaimana?
sumber
IIṠ⁼1
keII>0
keI<\
) ... Anda adalah banyak meskipun berbeda. Sepertinya Anda berpikir berbeda dari saya ... EDIT: Pietu1998 kembali!PHP , 69 byte
mencetak satu untuk prime lemah dan tidak ada untuk prime tidak lemah
Cobalah online!
sumber
Oktaf,
9384 byteTerima kasih kepada @LuisMendo dan @ rahnema1 untuk menghemat byte!
Cobalah online!
sumber
i-=1
dll? Juga,end
tidak diperlukan dalam fungsi; Anda dapat memindahkannya ke footerMaxima, 42 byte
Cobalah online!
sumber
MATL , 13 byte
Ini menghasilkan
1
jika lemah,0
sebaliknya.Cobalah online!
Penjelasan
sumber
GNU APL 1.2, 78 byte
∇f N
mendeklarasikan fungsi yang mengambil argumen.(~R∊R∘.×R)/R←1↓⍳N×2
memberikan daftar semua bilangan prima dari 2 hingga dua kali argumen. Saya berasumsi bahwa prime berikutnya kurang dari dua kali yang asli. Jika ini tidak benar,N*2
beri N kuadrat dan ambil jumlah byte yang sama (mudah-mudahan itu cukup besar untuk melampaui perdana berikutnya). (Lihat penjelasan Wikipedia tentang cara kerja penemuan perdana)X←(R←(...))⍳N
menetapkan daftar itu ke vektorR
(menimpa konten sebelumnya), menemukan indeks prime asliN
dalam daftar itu, dan kemudian menetapkan indeks itu untukX
.|R[X-1]-N
menghitung perbedaan antara prime sebelumnya (karenaR
mengandung bilangan prima,X-1
elemen th adalah prime sebelumN
)N
dan kemudian mengambil nilai absolut (APL beroperasi dari kanan ke kiri).|R[X+1]-N
melakukan hal yang sama, tetapi untuk prime berikutnya.(|R[X-1]-N)<|R[X+1]-N
mencetak 1 jika prime sebelumnya lebih dekat ke yang asli dari prime berikutnya dan 0 sebaliknya. Kurung dibutuhkan untuk diutamakan.∇
mengakhiri fungsi.sumber
Jelly , 9 byte
Cobalah online!
sumber
Pyth, 15 byte
Coba di sini.
Menggunakan algoritma Pietu1998.
sumber
Perl 6 , 41 byte
Cobalah online!
$_
adalah argumen untuk fungsi tersebut. Fungsi pemetaan-> \n { $_ + n, * + n ... &is-prime }
mengambil angkan
dan mengembalikan urutan angka$_ + n, $_ + 2*n, ...
yang berakhir ketika mencapai angka prima. Memetakan fungsi ini pada dua angka1
dan-1
menghasilkan urutan dua urutan; yang pertama dimulai dengan$_ + 1
dan berakhir dengan bilangan prima pertama lebih besar dari$_
, dan yang kedua dimulai dengan$_ - 1
dan berakhir dengan bilangan prima pertama lebih kecil dari$_
.[>]
mengurangi daftar dua elemen ini dengan operator lebih besar dari, mengembalikan true jika urutan pertama lebih besar (yaitu, lebih lama) dari yang kedua.sumber
Python 2.7 - 120 byte
Karena python tidak memiliki built-in adalah fungsi prima, kita dapat menggunakan teorema Wilson untuk mendapatkan pemeriksa prime pendek yang bagus. Teorema Wilson menyatakan bahwa angka adalah prima jika dan hanya jika (n-1)! kongruen dengan -1 mod (n). Oleh karena itu fungsi saya akan mengembalikan 1 jika bilangan prima dan 0 jika tidak. Setelah itu fungsi f akan menentukan apakah bilangan prima berikutnya dari angka itu terjadi pertama kali ketika naik turun daripada naik naik. Jika tidak satu pun dari angka yang dinaikkan yang prima, itu hanya dipanggil secara rekursif lagi.
Beberapa contoh I / O
sumber
Python 2 ,
1221081039492 byteCobalah online!
Menggunakan ide Pietu ... dan kemudian menghemat 28 byte dengan memainkan iterator daftar utama yang lebih pendek; lalu 2 lainnya dengan mengganti
-3*n>0
dengan>3*n
(d'oh!)sumber
Regex (kebanyakan rasa), 47 byte
Cobalah online!
Mengambil input di unary. Menghasilkan kecocokan untuk bilangan prima yang lemah, tidak ada kecocokan untuk bilangan prima yang tidak lemah. Bekerja dalam ECMAScript, Perl, PCRE, Python, Ruby.
Penjelasan:
Biarkan N menjadi input, A prime terdekat <N, dan B prime terdekat> N. Kesulitan utama dari pendekatan regex untuk tantangan ini adalah bahwa kami tidak dapat mewakili angka yang lebih besar dari input, seperti B. Sebaliknya, kami temukan b terkecil sehingga 2b + 1 adalah prima dan 2b + 1> N, yang memastikan 2b + 1 = B.
Kemudian, catatan bahwa kita tidak benar-benar perlu untuk menemukan A. Selama setiap prime <N lebih dekat dengan N dari B, N adalah prima lemah.
sumber
Oktaf, 53 byte
Cobalah online!
sumber
JavaScript ES6,
162154 byteHemat 8 byte berdasarkan trik Jörg Hülsermann "tidak mencetak apa pun dalam satu kasus". Tidak perlu
?"Y":"N"
setelah ituone<two
sumber
05AB1E , 17 byte
Cobalah online!
Menggunakan algoritma Pietu1998.
sumber
Python 3 , 149 byte
Cobalah online!
Saya menggunakan fungsi pembangkit prima (baris atas) yang diambil dari jawaban pertukaran tumpukan lama ini.
sumber
JavaScript, 98 byte
Kurang Golphed
Perhatikan kode tes tidak memeriksa input "prima" sebenarnya prima.
sumber
braingasm ,
2322 byteMencetak
1
untuk bilangan prima lemah dan0
tidak lemah.Panduan:
sumber
Julia 0,6, 64 byte
sumber
Python 2 , 81 byte
Cobalah online!
Menggunakan teorema Wilson untuk tes primality.
sumber