Kami memiliki tantangan faktorisasi utama beberapa waktu yang lalu, tetapi tantangan itu sudah hampir enam tahun dan hampir tidak memenuhi persyaratan kami saat ini, jadi saya percaya ini saatnya untuk yang baru.
Tantangan
Tulis program atau fungsi yang memasukkan bilangan bulat lebih besar dari 1 dan menampilkan atau mengembalikan daftar faktor prima.
Aturan
- Input dan output dapat diberikan dengan metode standar apa pun dan dalam format standar apa pun.
- Faktor duplikat harus dimasukkan dalam output.
- Output mungkin dalam urutan apa pun.
- Masukan tidak akan kurang dari 2 atau lebih dari 2 31 - 1.
- Built-in diizinkan, tetapi termasuk solusi non-builtin dianjurkan.
Uji kasus
2 -> 2
3 -> 3
4 -> 2, 2
6 -> 2, 3
8 -> 2, 2, 2
12 -> 2, 2, 3
255 -> 3, 5, 17
256 -> 2, 2, 2, 2, 2, 2, 2, 2
1001 -> 7, 11, 13
223092870 -> 2, 3, 5, 7, 11, 13, 17, 19, 23
2147483646 -> 2, 3, 3, 7, 11, 31, 151, 331
2147483647 -> 2147483647
Mencetak gol
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Jawaban:
Pyth , 1 byte
Saya suka peluang Pyth dalam tantangan ini.
sumber
Python 2 , 55 byte
Cobalah online!
sumber
Python 2, 53 byte
Mencoba setiap pembagi potensial
i
secara bergantian. Jikai
adalah pembagi, tambahkan dan mulai kembali dengann/i
. Lain, coba pembagi tertinggi berikutnya. Karena pembagi diperiksa dalam urutan yang meningkat, hanya yang utama yang ditemukan.Sebagai sebuah program, untuk 55 byte:
sumber
Mathematica,
3830 byteTerima kasih @MartinEnder selama 8 byte!
sumber
FactorInteger[#][[All, 1]]&
? 26 byteJelly , 2 byte
Cobalah online!
sumber
Haskell , 48 byte
Cobalah online! Contoh penggunaan:
(2%) 1001
hasil[7,11,13]
.sumber
JavaScript (ES6), 44 byte
Sangat tidak efisien karena fakta bahwa ia beralih dari 2 hingga setiap faktor utama, termasuk yang terakhir. Anda dapat memotong kompleksitas waktu secara dramatis dengan biaya 5 byte:
sumber
Cubix ,
3732 byteCobalah online! atau Tontonlah dalam aksi .
sumber
Sebenarnya , 6 byte
Cobalah online!
Penjelasan:
sumber
o
sekarang, kan?J, 2 byte
Badan harus minimal 30 karakter.sumber
MATL , 2 byte
Cobalah online!
Wajib "jawaban bawaan yang membosankan".
sumber
Japt, 2 byte
Built-in
k
digunakan pada inputU
. Juga merujuk ke suatu negara.Uji secara online!
sumber
tuli-nada , 3 byte
Bahasa ini cukup muda dan belum benar-benar siap untuk jurusan apa pun, tetapi dapat melakukan faktorisasi utama:
Ini akan menunggu input pengguna, dan kemudian menampilkan daftar faktor prima.
sumber
MATLAB, 6 byte
Saya pikir ini tidak memerlukan penjelasan apa pun.
sumber
Bash + coreutils, 19 byte
Cobalah online!
sumber
factor|sed s/.*://
. Jugafactor|cut -d: -f2
(ataufactor|cut -d\ -f2
untuk mencocokkan keluaran Anda saat ini) adalah panjang byte yang sama tetapi akan berjalan lebih cepat dan menggunakan lebih sedikit memori overhead.factor|cut -d\ -f2-
menghilangkan ruang terdepan, yang satu byte lebih lama.Batch, 96 byte
sumber
Pyke, 1 byte
Coba di sini!
Faktor prima dibangun.
sumber
Hexagony , 58 byte
Belum bermain golf, tapi @MartinEnder seharusnya bisa menghancurkan ini
Mencetak faktor-faktor yang dipisahkan ruang, dengan ruang tambahan
Golf:
Ditata:
Penjelasan datang nanti.
sumber
05AB1E , 1 byte
Cobalah online!
sumber
CJam, 2 byte
cjam.aditsu.net / ...
Ini sebuah fungsi. Martin, sepertinya aku mengantuk.
sumber
C, 92 byte
Versi tidak disatukan:
sumber
Japt , 1 byte (tidak bersaing)
Cobalah online!
sumber
PHP , 51 byte
Cobalah online!
sumber
C (gcc) , 51 byte
Cobalah online!
sumber
Perl 6 ,
7764 byteCobalah
Cobalah (Catatan: tidak punya cukup waktu untuk menyelesaikannya)
Versi yang jauh lebih performan sedikit lebih lama yaitu 100 byte.
Cobalah
Diperluas: (versi 64 byte)
sumber
VB.NET, 86 byte
Apakah ini duduk di sekitar dari beberapa program Project Euler. Dihapus optimasi untuk kepentingan kependekan, dan ini adalah hasilnya. Secara alami, VB sangat bertele-tele, jadi cukup panjang. Saya tidak menghitung spasi putih terkemuka. Itu bisa dihilangkan, tetapi lebih mudah dibaca dengan itu.
Ini mengambil integer sebagai parameter, dan mencetak faktor prima dengan koma setelah. Ada koma tertinggal di akhir.
sumber
Perl 6 , 51 byte
Solusi rekursif:
sumber
Java (OpenJDK) , 259 byte
Cobalah online!
sumber
Ruby, 61 byte
Versi builtin terpendek yang bisa saya pikirkan.
sumber
Ruby , 48 byte
Cobalah online!
Sedikit terlambat ke pesta, tapi ... kenapa tidak?
sumber