Seorang anak penasaran menggunakan sebuah program yang dapat pd nomor atau ekspresi ke dalam bentuk berikut: p1^e1 * p2^e2 * ... * pn^en
. Eksponen yang sama dengan 1
dihilangkan misalnya360 = 2^3 * 3^2 * 5
Anak itu mengetik output ini ke dalam program sebagai input baru tetapi dia tidak mengerti ^
tanda jadi kadang-kadang dia melewatkan satu atau lebih dari mereka yang menggabungkan basis-basis dan eksponen yang sesuai. Misalnya(360 =) 2^3 * 3^2 * 5 => 2^3 * 32 * 5 (= 1280)
Karena kesalahan ini dia mungkin mendapatkan faktorisasi yang berbeda yang dapat dia masukan lagi (dengan melewatkan 0 atau lebih ^
). Dia mengulangi prosesnya sampai faktorisasi tidak berubah lagi (mungkin tidak ada lagi ^
atau dia menyalin hasilnya dengan benar).
Anda harus menulis sebuah program atau fungsi yang memberikan integer n
( n>1
) menampilkan semua angka yang mungkin dalam urutan yang meningkat yang faktorisasinya bisa menjadi faktor yang diakibatkan oleh anak tersebut (termasuk n
). Misalnya untuk input 16
, kemungkinan faktorisasi terakhir adalah(16 =) 2^4, (24 =) 2^3 * 3, (23*3 =) 3 * 23
Detail input:
- input adalah bilangan bulat tunggal yang lebih besar dari
1
- tidak ada input yang diberikan yang menghasilkan jumlah output lebih besar dari
2^31-1
- tidak ada input yang akan diberikan yang menghasilkan lebih dari
1000
angka output
Rincian keluaran:
- daftar bilangan bulat dalam bentuk yang nyaman untuk bahasa Anda
Contoh:
Input => Output
11 => 11
16 => 16 24 69
360 => 140 360 770 1035 1219 1280 2875 3680
605 => 560 605 840 2415
2048 => 211 2048
58564 => 230 456 1311 2508 9975 12768 13794 20748 58564 114114 322102
Ini adalah kode-golf sehingga program terpendek menang.
Jawaban:
CJam - 66
Cobalah di http://cjam.aditsu.net/
Penjelasan:
(*) Terima kasih Martin
sumber
^
pun dapat dihapus dalam satu langkah. Jadi untuk58564 = 2^2 * 11^4
itu harus bisa menghasilkan2508 = 22 * 114
.Ruby, 219
Untuk memulai ini:
Membuat fungsi s mengembalikan Array angka.
https://ideone.com/iOMGny
Gunakan seperti ini:
Sangat menyenangkan menulis ini semua ini di ponsel ...
sumber
Perl, 193 byte
Baris baru ditambahkan untuk keterbacaan.
Untuk loop memfaktorkan angka berikutnya (
$x
) ke dalam hash (%f
) dari bilangan prima dan kekuatan. Fungsi rekursif (R
) menggunakan hash ini untuk menghasilkan semua angka yang bisa diperoleh dengan menghilangkan^
tanda. Angka-angka ini ditambahkan ke antrian (@q
), dan proses ini diulangi oleh loop while luar. Setiap nomor dari antrian juga disimpan dalam array yang unik, diurutkan (@r
) untuk dicetak.sumber
Pyth,
464544Coba di sini.
Memperbaiki beberapa
^
bug. Contohnya:Perhatikan bahwa kode ini bergantung pada beberapa perbaikan bug ke kompiler resmi yang didorong setelah pertanyaan diajukan. Namun, itu tidak menggunakan fitur bahasa baru.
sumber
u
) di dalam pengurangan lain tidak mungkin. Saya mengubah 2 ke 3 di lokasi yang sesuai sehingga mengurangi akan mengambil 3 input, bukan 2. Itu saja.