Angka yang sangat komposit adalah bilangan bulat positif yang memiliki lebih banyak pembagi daripada bilangan bulat positif yang lebih kecil. Ini adalah urutan OEIS A002182 . 20 istilah pertamanya adalah
1, 2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840, 1260, 1680, 2520, 5040, 7560
Misalnya, 4
ada dalam urutan karena memiliki 3 pembagi (yaitu 1, 2, 4), sedangkan 3 hanya memiliki 2 pembagi, 2 juga memiliki 2 pembagi, dan 1 memiliki 1 pembagi.
Tantangan
Diberikan input bilangan bulat positif n , hasilkan bilangan yang sangat komposit n -th atau bilangan yang sangat komposit n pertama , sesuai pilihan Anda (tetapi pilihan harus sama untuk setiap input n ).
Aturan
Program atau fungsi harus secara teoritis bekerja untuk input besar sembarang yang diberikan waktu dan memori tak terbatas, dan tanpa mempertimbangkan batasan tipe data. Pada dasarnya, ini berarti tidak ada hardcoding sejumlah nilai yang terbatas.
Dalam praktiknya, program atau fungsi harus berjalan dalam jumlah waktu yang wajar, katakanlah kurang dari 1 menit, untuk n hingga 20. Input atau output maksimum mungkin dibatasi oleh tipe data standar bahasa Anda (tetapi sekali lagi, algoritme harus secara teoritis bekerja untuk jumlah besar yang sewenang-wenang).
Setiap input dan format output yang masuk akal diizinkan, termasuk unary.
Golf kode. Bytes paling sedikit menang.
sumber
Jawaban:
05AB1E ,
1514 byteMasukan dalam indeks-nol. Itu berarti
n = 0
memberi1
,n = 1
memberi2
, dll. Kode:Penjelasan:
Menghitung n = 19 , yang akan menghasilkan
7560
sekitar 10 detik.Cobalah online!
Menggunakan pengodean CP-1252 .
sumber
Jelly, 15 byte
Untuk input n , ini mencetak angka pertama n yang sangat komposit.
Untuk n = 20 , dibutuhkan kurang dari dua detik di Coba online!
Bagaimana itu bekerja
Versi alternatif, 13 byte (tidak bersaing)
Sementara kode di bawah ini berfungsi dalam versi terbaru Jelly yang mendahului tantangan ini, implementasinya
M
sangat lambat, dan tidak sesuai dengan batas waktu. Ini sudah diperbaiki.Cobalah online!
Bagaimana itu bekerja
sumber
RÆDL€MḢ=µƓ#
(11 byte), tetapi butuh 44 menit pada mesin saya ...MATL ,
2624 byteCobalah online!
Jumlah pembagi terbesar yang ditemukan saat ini disimpan di clipboard K. Nomor yang sangat komposit (HCN) disimpan langsung di tumpukan. Sebuah loop terus menguji kandidat ke HCN. Ketika satu ditemukan itu ditinggalkan di tumpukan, dan clipboard K diperbarui. Loop keluar ketika jumlah HCN yang diinginkan telah ditemukan.
sumber
Perl,
6057 + 1 = 58 byteMembutuhkan
-n
dan gratis-M5.010
|-E
:Bagaimana itu bekerja:
sumber
JavaScript (ES6) 72
Implementasi langsung. Waktu hampir 20 detik untuk input 20
Trik eval bisa menghemat byte dua kali lipat waktu berjalan
Kurang golf
sumber
Pyth,
1716 byte1 byte berkat Jakube
Suite uji
Mengambil 0 diindeks n , dan mengembalikan n sangat komposit.
Penjelasan:
sumber
Ruby,
706967666462Implementasi langsung.
sumber
C, 98 byte
Coba di sini .
Tidak disatukan
sumber
Python 3, 97 byte
Program lengkap yang mengambil input dari STDIN dan mencetak output ke STDOUT. Ini mengembalikan
n
nomor komposit sangat terindeks th 1.Bagaimana itu bekerja
Ini adalah implementasi yang mudah. Input
n
adalah indeks angka yang sangat komposit.Program ini mengulangi bilangan bulat
i
. Untuk setiap bilangan bulatj
kurang darii
,i mod j
diambil; jika ini0
,j
harus menjadi faktori
dan penghitungc
bertambah, memberikan jumlah pembagii
setelah pengulangan.p
adalah jumlah pembagi tertinggi sebelumnya, jadi jikac > p
, angka baru yang sangat komposit telah ditemukan dan penghitungq
bertambah. Sekaliq = n
,i
pasti nomor yangn
sangat komposit, dan ini dicetak.Cobalah di Ideone
(Ini membutuhkan ~ 15 detik untuk
n = 20
, yang melebihi batas waktu untuk Ideone. Karenanya, contoh yang diberikan adalah untukn = 18
.)sumber
Python 2, 207 byte
Menggunakan metode yang sama dengan jawaban Dennis 'Jelly. Hitung 20 istilah pertama dalam
<2
detik.sumber