Redivosite adalah kata portmanteau yang diciptakan untuk tujuan tunggal tantangan ini. Ini campuran Reduksi, Divisi dan Komposit.
Definisi
Diberikan bilangan bulat N> 6 :
- Jika N adalah prima, N bukan Nomor Redivosite.
- Jika N adalah komposit:
- berulang kali menghitung N '= N / d + d + 1 sampai N' adalah prima, di mana d adalah pembagi terkecil dari N lebih besar dari 1
- N adalah Nomor Redivosite jika dan hanya jika nilai akhir N ' adalah pembagi N
Di bawah ini adalah 100 Nomor Redivosite pertama (tidak ada entri OEIS pada saat posting):
14,42,44,49,66,70,143,153,168,169,176,195,204,260,287,294,322,350,414,462,518,553,572,575,592,629,651,702,726,735,775,806,850,869,889,891,913,950,1014,1023,1027,1071,1118,1173,1177,1197,1221,1235,1254,1260,1302,1364,1403,1430,1441,1554,1598,1610,1615,1628,1650,1673,1683,1687,1690,1703,1710,1736,1771,1840,1957,1974,2046,2067,2139,2196,2231,2254,2257,2288,2310,2318,2353,2392,2409,2432,2480,2522,2544,2635,2640,2650,2652,2684,2717,2758,2760,2784,2822,2835
Contohnya
- N = 13:13 adalah bilangan prima, jadi 13 bukan Angka Redivosite
- N = 32 : 32/2 + 3 = 19; 19 bukan pembagi atau 32, jadi 32 bukan Nomor Redivosite
- N = 260 : 260/2 + 3 = 133, 133/7 + 8 = 27, 27/3 + 4 = 13; 13 adalah pembagi atau 260, jadi 260 adalah Nomor Redivosite
Tugas Anda
- Dengan bilangan bulat N , kembalikan nilai kebenaran jika itu adalah Nomor Redivosite atau nilai palsu. (Anda juga dapat menampilkan dua nilai yang berbeda, asalkan konsisten.)
- Input dijamin lebih besar dari 6 .
- Ini kode-golf , jadi jawaban tersingkat dalam byte menang!
code-golf
decision-problem
integer
division
Arnauld
sumber
sumber
a(n)
secara langsung, atau karena Anda dapat menghitung istilah dari yang sebelumnya). Terima kasih, Arnauld, untuk mengubah tantangan. :)Jawaban:
Haskell,
918583807574 byteCobalah online!
Sunting: -2 bytes berkat @BMO, -3 bytes berkat @ H.PWiz dan
-5-6 bytes berkat @ Ørjan Johansensumber
Sekam , 14 byte
Cobalah online!
-3 Terima kasih kepada H.PWiz .
sumber
Ω
Γ
...Γ
, diberikan daftar [a, b, c ...] akan berlaku~+→Π
untuka
dan[b,c...]
.~+→Π
menambahkana+1
keproduct[b,c...]
.a
adalah pembagi terkecil,product[b,c...]
adalahN/d
C (gcc) ,
9489 byteCobalah online!
Penjelasan
sumber
Jelly , 14 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Python 2 ,
9791 byteCobalah online!
Keluaran melalui kode keluar.
Tidak Disatukan:
Cobalah online!
sumber
05AB1E ,
1716 byteCobalah online!
Penjelasan
sumber
Pyth , 20 byte
Coba di sini!
Bagaimana itu bekerja
Dan 4 byte pertama (
<P_Q
) cukup periksa apakah inputnya tidak prima.Dengan bantuan dari Emigna , saya berhasil menghemat 3 byte.
sumber
head(P)
bukanfiITZ2
bagian, karena pembagi terkecil yang lebih besar dari 1 akan selalu menjadi prima?Python 3 , 149 byte
Cobalah online!
Menggunakan pendekatan saringan. Harus cepat (
O(N log log N)
= kompleksitas waktu saringan Eratosthenes) bahkan dengan besarN
(tetapi menyimpanO(N)
bilangan bulat dalam memori)catatan:
n
tidak melebihiN
, dan untukN > 7
p
dapat dirange(2,N)
bukanrange(2,N+1)
untuk pengayakan./
tidak berfungsi,//
harus digunakan, karena indeks daftar.range
ke variabel lain tidak membantu, sayangnya.Penjelasan:
-~N
==N+1
.s
diinisialisasi denganN+1
nol (Python adalah pengindeksan 0, jadi indeksnya adalah0..N
)s[n]
diharapkan0
jikan
perdana, danp
untukp
perdana minimum yang membagin
jikan
merupakan komposit.s[0]
dans[1]
nilai tidak penting.Untuk masing-masing
p
dalam kisaran[2 .. N-1]
:s[p] < 1
(yaitu,s[p] == 0
), makap
adalah bilangan prima, dan untuk masing-masingq
merupakan kelipatan darip
dans[q] == 0
, tetapkans[q] = p
.2 baris terakhir mudah, kecuali
n//s[n]-~s[n]
==(n // s[n]) + s[n] + 1
.Python 3 , 118 byte
Cobalah online!
Dengan biaya kinerja yang sedikit lebih buruk. (Yang ini berjalan dalam
O(N log N)
kompleksitas waktu, menganggap implementasi yang wajar dari irisan Python)Program lengkap yang setara adalah 117 byte .
sumber
n//s[n]-~s[n]
alih-alihn//s[n]+s[n]+1
untuk 149 byte.or p
juga bisa|p
or p
melakukan logis atau, saat|p
melakukan bitwise atau. Artinya,a or b
adalahb if a == 0 else a
.for
untuk menggunakan irisan yang lainfor
. Therange
dibalik, sehingga indeks lebih rendah akan menimpa orang-orang yang lebih besar, dan mulai slice di2*p
Anda tidak akan menggantis[0]
ataus[p]
.Haskell , 110 byte
Cobalah online!
Tidak terlalu senang ...
sumber
Oktaf , 92 byte
Cobalah online!
sumber
APL (Dyalog) , 50 byte
Cobalah online!
sumber
Japt,
2524 byteSaya khawatir saya mungkin salah arah dengan ini, tetapi saya kehabisan waktu untuk mencoba pendekatan yang berbeda.
Output
0
untuk false atau1
true.Cobalah
sumber
Perl 5 , 291 +1 (-a) = 292 byte
Sial Perl karena tidak memiliki pemeriksa prima asli.
Versi tidak disatukan,
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , 64 byte
Implementasi langsung menggunakan penggantian pola rekursif
(mengganti "\ [Membagi]" dengan simbol "∣" menghemat 7 byte)
Cobalah online!
sumber
Bersih ,
128117114 byteCobalah online!
sumber
J , 35 byte
Cobalah online!
Pembagi minimum yang menjadi faktor utama pertama dicuri dari solusi @ Dennis's Jelly (sebelumnya saya gunakan
<./@q:
).Seharusnya ada cara yang lebih baik untuk melakukan iterasi, tetapi sepertinya saya tidak dapat menemukannya. Saya berpikir untuk menghindari melakukan tes primality (
^:(0&p:)
) dan bukannya menggunakan yang merugikan tetapi sepertinya itu akan sedikit lebih lama karena Anda akan membutuhkan_2{
dan beberapa perubahan yang mungkin tidak memberikan pengurangan bersih.Saya benar-benar merasa harus ada cara untuk menghindari memiliki orang tua di sekitar pemeriksaan primality juga.
Penjelasan (diperluas)
sumber
APL NARS, 43 karakter, 85 byte
(berharap konvergen untuk semua angka> 6) menguji:
Gagasan menggunakan 2 fungsi anonim saya dapatkan untuk solusi APL lainnya.
sumber
Pyt , 44 byte
Lihat kode di bawah ini untuk penjelasan - satu-satunya perbedaan adalah (1) bahwa N dikurangi sebelum memperhitungkan kenaikan pada awal loop, dan (2) menggunakan NOR bukannya OR.
Cobalah online!
Saya membuat ini sebelum saya membaca kembali pertanyaan dan memperhatikan bahwa itu hanya ingin benar / salah.
Pyt, 52 byte
Mencetak daftar angka Redivosite yang tak terbatas.
Penjelasan:
Cobalah online!
sumber