Saya kembar 2/3 dengan saudara laki-laki saya, yaitu lahir pada hari yang sama di bulan yang sama tetapi dua belas tahun kemudian. Ketika saya berusia 5 tahun, dia berusia 17 tahun, keduanya prima; pasangan usia terakhir yang bisa kita andalkan adalah [71, 83] dengan kita berdua masih hidup dan dapat merayakan Yobel kebetulan ini.
Tugas
Buat kode itu
mengambil dua bilangan bulat sebagai input: perbedaan antara penghitung dan "kembar" sebagai bilangan bulat positif k (ya, saya yang lebih muda) dan batas atas sebagai bilangan bulat positif u (pertimbangan runtime)
dan memberikan output sebagai array atau daftar semua angka i lebih rendah dari atau sama dengan u yang i dan i + k adalah bilangan prima. Output tidak perlu disortir.
Uji Kasus
12, 1000 -> [5, 7, 11, 17, 19, 29, 31, 41, 47, 59, 61, 67, 71, 89, 97, 101, 127, 137, 139, 151, 167, 179, 181, 199, 211, 227, 229, 239, 251, 257, 269, 271, 281, 337, 347, 367, 389, 397, 409, 419, 421, 431, 449, 467, 479, 487, 491, 509, 557, 587, 601, 607, 619, 631, 641, 647, 661, 727, 739, 757, 761, 797, 809, 811, 827, 907, 929, 941, 971, 997]
2, 999 -> [3, 5, 11, 17, 29, 41, 59, 71, 101, 107, 137, 149, 179, 191, 197, 227, 239, 269, 281, 311, 347, 419, 431, 461, 521, 569, 599, 617, 641, 659, 809, 821, 827, 857, 881]
3, 1500 -> [2]
30, 1500 -> [7, 11, 13, 17, 23, 29, 31, 37, 41, 43, 53, 59, 67, 71, 73, 79, 83, 97, 101, 107, 109, 127, 137, 149, 151, 163, 167, 181, 193, 197, 199, 211, 227, 233, 239, 241, 251, 263, 277, 281, 283, 307, 317, 337, 349, 353, 359, 367, 379, 389, 401, 409, 419, 431, 433, 449, 457, 461, 479, 491, 541, 547, 557, 563, 569, 571, 577, 587, 601, 613, 617, 631, 643, 647, 653, 661, 709, 727, 739, 743, 757, 797, 809, 823, 827, 829, 853, 857, 877, 881, 907, 911, 937, 941, 947, 953, 967, 983, 991, 1009, 1019, 1021, 1031, 1033, 1039, 1061, 1063, 1087, 1093, 1123, 1151, 1163, 1171, 1187, 1193, 1201, 1229, 1249, 1259, 1277, 1289, 1291, 1297, 1399, 1409, 1423, 1429, 1451, 1453, 1459, 1481, 1493]
Edit
Karena saya gagal menentukan batas atas, solusi inklusif dan eksklusif dipersilakan.
Edit No. 2
Tantangan berakhir pada 1 September, satu minggu dari awal.
Sepertinya kita memiliki pemenang tetapi jika popularitas dasi adalah pemutus dasi; dalam hal ini "yang kedua" akan dikompensasi melalui hadiah.
Jawaban:
Jelly,
87 byteCobalah online!
Penjelasan
sumber
Brachylog ,
2723 byteCobalah online!
Verifikasi semua testcases.
Predikat 0 (predikat utama)
Predikat 1 (predikat bantu)
sumber
05AB1E , 9 byte
Kode:
Menggunakan pengkodean CP-1252 . Cobalah online! .
sumber
Pyke, 10 byte
Coba di sini!
Juga 10 byte:
Coba di sini!
sumber
Oktaf,
3433 bytesumber
MATL , 8 byte
Kredit ke @alephalpha untuk pendekatannya , yang membantu saya menghemat 3 byte
Cobalah online!
sumber
Python 3,
1149290 byteBerkat @ Dennis untuk -2 byte
Fungsi yang mengambil input melalui argumen dan mengembalikan set yang tidak disortir. Ini eksklusif sehubungan dengan batas atas.
Ini menggunakan metode dalam jawaban xnor di sini untuk menemukan bilangan prima.
Cobalah di Ideone
Bagaimana itu bekerja
Temuan utama
Kami pertama-tama menginisialisasi nilai uji
i
dan produkP
sebagai1
, dan daftar bilangan primal
sebagai set berisi0
. Kemudian,while
loop yang menguji semua nilaii
dalam kisaran[1, u+k-1]
untuk primality dieksekusi. Idenya adalah bahwa dengan mengalikanP
dengani^2
pada akhir setiap iterasi,P
mengambil nilai(i-1)!^2
saat pengujiani
, yaitu produk dari bilangan bulat[1, i+1]
kuadrat. Tes primality aktual kemudian dilakukan dengan menghitungP mod i
; jika ini mengembalikan nol, makai
tidak dapat menjadi prima karena ini menyiratkan yangi
dapat dibagi oleh setidaknya satu dari nilai-nilai yang membentuk produk. Jika ini kembali1
, makai
harus prima karena tidak dapat dibagi oleh nilai apa pun dalam produk. Jikai
prima, ditambahkan kel
, dan jika tidak,0
ditambahkan. Kuadrat produk mencegah identifikasi salah4
sebagai prima, dan berguna di sini karena menjamin bahwa hanya0
atau1
akan dikembalikan, memungkinkan pilihan nilai yang akan ditambahkan dibuat dengan hanya mengalikan hasilnya dengani
.Identifikasi bilangan prima 'kembar'
Kami sekarang membuat set furter, berisi semua elemen
l-k
, elemen-bijaksana. Perpotongan set ini danl
kemudian ditemukan menggunakan&
, yang meninggalkan set yang hanya berisi elemen-elemen yang umum untuk kedua set. Angkai
hanya di kedua set jika keduanyai
dani+k
prima, artinya ini meninggalkan output yang diinginkan. Namun, jikak
prima,0
akan hadir di kedua set, artinya ini harus dihapus sebelum kembali.sumber
k,u=input();i=P=1;l={0};exec'l|={P%i*i};P*=i*i;i+=1;'*(u+k);print{i-k for i in l}&l
bekerja untuk 83 byte dalam Python 2. Bahkan dalam 3, membangun satu set cara ini akan menghemat beberapa byte.0
dari set terakhir, karena jikak
prima, ini keliru akan dikembalikan .R, 98 byte
Tidak Disatukan:
sumber
CJam, 17 byte
Baik sebagai program lengkap:
Cobalah online!
Atau sebagai blok tanpa nama:
Cobalah online!
sumber
Java 7,
185175 byteTidak digabungkan & kode uji:
Coba di sini.
Keluaran:
sumber
PARI / GP, 39 byte
sumber
Mathematica, 43 byte
Hasilkan semua bilangan prima kurang dari atau sama dengan batas atas. Tambahkan perbedaan usia ke hasilnya. Pilih bilangan prima di antara mereka. Kurangi perbedaan usia dengan hasilnya.
sumber
Swift, 142 byte
sumber
Perl 6 ,
3937 bytePenjelasan:
sumber
SILOS , 205 byte
Cobalah online!
Tes Primalty oleh teorema Wilson .
sumber
Sebenarnya , 12 byte
Masukan
u
kemudiank
. Saran bermain golf diterima. Cobalah online!Tidak melakukan pelanggaran:
sumber
R, 104 byte
Berbeda dengan solusi R lain yang diposting, yang ini mengambil input dari stdin.
Tidak Disatukan:
sumber
Javascript (ES6),
90838075 byteContoh:
sumber
Pyth, 13 byte
Program yang mengambil input dari daftar formulir
[k, u]
dan mencetak daftar.Cobalah online
Bagaimana itu bekerja
sumber