Diberi nomor alami, n
tuliskan program atau fungsi untuk mendapatkan daftar semua kemungkinan dua faktor perkalian yang dapat digunakan untuk mencapainya n
. Untuk memahami lebih baik apa yang berpura-pura dapat Anda pergi ke http://factornumber.com/?page=16777216 untuk melihat ketika n
adalah 16777216
kita mendapatkan daftar berikut:
2 × 8388608
4 × 4194304
8 × 2097152
16 × 1048576
32 × 524288
64 × 262144
128 × 131072
256 × 65536
512 × 32768
1024 × 16384
2048 × 8192
4096 × 4096
Tidak perlu cukup mencetak hal-hal seperti di sini. Syaratnya adalah bahwa setiap entri (pasangan faktor) dibedakan dengan baik satu sama lain dan di dalam masing-masing pasangan, faktor pertama juga dibedakan dengan baik dari yang lain. Jika Anda memilih untuk mengembalikan daftar / array, elemen di dalam bisa berupa daftar / array dengan dua elemen, atau beberapa struktur bahasa Anda yang mendukung sepasang hal seperti C ++ std::pair
.
Jangan cetak perkalian dengan 1 entri, atau ulangi entri dengan faktor pertama dirubah oleh yang kedua, karena mereka cukup berguna.
Tidak ada pemenang; itu akan menjadi kode dasar per bahasa golf.
sumber
30
?Jawaban:
Java (OpenJDK 8) ,
816665 byte++j<=i/j
->j++<i/j
.Cobalah online!
Yang lama (untuk referensi)
Java (OpenJDK 8) , 126 byte
Cobalah online!
Codegolf pertama yang mengirim dan penggunaan lambda pertama. Masa depan diri saya, maafkan saya untuk kode.
sumber
05AB1E , 8 byte
Cobalah online!
sumber
C (gcc) ,
585453 byteCobalah online!
sumber
Python 2 , 51 byte
Cobalah online!
51 byte (terima kasih kepada Luis Mendo untuk satu byte)
Cobalah online!
51 byte
Cobalah online!
sumber
[f]
.lambda n:[(n/k,k)for k in range(1,n)if(k*k<=n)>n%k]
Haskell, 38 byte
Cobalah online!
sumber
APL (Dyalog) , 28 byte
Cobalah online!
sumber
Perl 6 , 38 byte
Cobalah
Diperluas:
sumber
Brachylog , 8 byte
Cobalah online!
Penjelasan
Bagian
~×
ini tidak termasuk 1s dalam outputnya, jadi untuk input N ia memberikan [N] bukannya [1, N] , yang kemudian diambil olehĊ
. Saya tidak sepenuhnya yakin mengapa≜
diperlukan ...sumber
≜
diperlukan karena jika tidak, tidak ada poin pilihan untukᵘ
: daftar panjang-2 yang produknya merupakan input adalah satu-satunya jawaban jika Anda tidak benar-benar meminta nilai-nilai daftar.Japt , 9 byte
Uji secara online! Mengembalikan array array, dengan beberapa null di akhir;
-R
bendera ditambahkan untuk menampilkan keluaran lebih jelas.sumber
null
di akhir.Jelly , 8 byte
Tautan monadik yang mengambil nomor dan mengembalikan daftar daftar (pasangan) angka.
Cobalah online! (waktu habis pada TIO untuk
16777216
contoh karena akan membuat daftar 68,7 miliar pasangan dan menyaring ke mereka yang memiliki produk yang benar!)Bagaimana?
*
Ḋ
, dequeue, secara implisit membuat kisaran input numerik sebelum berakting, dan fungsi rentang secara implisit menempatkan inputnya, jadi dengan, katakanlah,n=24
hasilnya½
adalah4.898...
; rentangnya menjadi[1,2,3,4]
; dan hasil dequeued adalah[2,3,4]
** Demikian pula untuk di atas,,
p
produk Cartesian, membuat rentang untuk input numerik - di sini argumen yang tepatn
karenanya argumen yang tepat menjadi[1,2,3,...,n]
sebelum produk Cartisian aktual terjadi.sumber
Sekam , 8 byte
Cobalah online!
Penjelasan
sumber
JavaScript (ES6), 55 byte
Demo
Tampilkan cuplikan kode
Cobalah secara Online!
sumber
6
?Python 2 , 59 byte
Cobalah online!
sumber
range(2,N)
dan menyimpannya sebagai daftar, namun memori yang dialokasikan tidak cukup. Orang bisa mencoba menggantirange
denganxrange
(generator rentang Python 2), meskipun ini melebihi satu menit maksimum runtime TIO. Pada mesin dengan memori dan waktu yang cukup, program ini harus berakhir dan mengembalikan jawaban yang benar.Jelly , 9 byte
Cobalah online!
sumber
Oktaf , 42 byte
Cobalah online!
sumber
PHP, 70 byte
Sebagai string (70 byte):
Sebagai dump array (71 byte):
(saya tidak yakin apakah saya dapat menggunakan return $ b; alih-alih print_r karena tidak lagi menampilkan array, jika tidak saya dapat menyimpan 2 byte di sini.)
Array memberikan hasil seperti:
sumber
Jelly , 12 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Bahasa Wolfram (Mathematica) , 41 byte
Cobalah online!
adalahFunction
operator, yang memperkenalkan fungsi tanpa nama dengan parameter bernaman
.sumber
Faktor , 58
Nah, pasti ada beberapa Faktor dalam pertanyaan ini!
Ini kutipan.
call
dengan nomor pada tumpukan, meninggalkanassoc
(array pasangan) pada tumpukan.Saya tidak pernah yakin apakah semua impor dihitung atau tidak, karena mereka adalah bagian dari bahasa. Yang ini menggunakan:
(Jika mereka menghitung, saya harus mencari solusi yang lebih panjang dengan impor yang lebih pendek, yang agak konyol)
Sebagai sebuah kata:
sumber
Ruby , 43 byte
Cobalah online!
Bagaimana itu bekerja:
Untuk setiap angka hingga sqrt (n), hasilkan pasangan
[[x, n/x]]
, lalu ambiln%x
elemen th dari array ini. Jikan%x==0
ini[x, n/x]
, sebaliknya itunil
. setelah selesai, hapus semuanil
dari daftar.sumber
Pari / GP ,
493438 byteCobalah online!
Tetapkan notasi pembangun untuk semua pasangan
[d, n/d]
tempatd
menjalankan semua pembagi subjekd
dari dan .n
d > 1
d <= n/d
Perbaikan besar oleh alephalpha.
sumber
n->[[d,n/d]|d<-divisors(n),d<=n/d]
1
.Sekam ,
1412 byteCobalah online!
Penjelasan
sumber
APL + WIN, 32 byte
Penjelasan:
sumber
Tambahkan ++ ,
1815 byteCobalah online!
Bagaimana itu bekerja
sumber
Mathematica, 53 bytes
Try it online!
sumber
Befunge-93, 56 bytes
Try It Online
sumber
Julia 0.6, 41 bytes
Try it online!
Redefines the inbuild unary operator
~
and uses an array comprehension to build the output.div(x,y)
is neccessary for integer division.x/y
saves 5 bytes but the output is~4=(2,2.0)
.Int(floor(√x))
.sumber
APL NARS 99 chars
9+46+41+3=99 Test: (where not print nothing, it return something it return ⍬ the list null one has to consider as "no solution")
sumber
Pyt,
6765 bytesI'm pretty sure this can be golfed.
Basically, the algorithm generates a list of all of the divisors of the input (let's call it n), makes the same list, but flipped, interleaves the two (e.g., if n=24, then, at this point, it has [1,24,2,12,3,8,4,6,6,4,8,3,12,2,24,1]), and prints out the elements from index 2 until half the array length, printing each number on a new line, and with an extra new line in between every pair.
Most of the work is done in actually managing the stack.
Saved 2 bytes by using increment function.
sumber
Perl 5, 50 bytes
Ungolfed:
Try it online.
sumber