Diberikan bilangan bulat positif n> 1 menentukan berapa angka yang dapat dibuat dengan menambahkan bilangan bulat lebih besar dari 1 yang produknya adalah n . Sebagai contoh jika n = 24 kita dapat mengekspresikan n sebagai produk dengan cara berikut
24 = 24 -> 24 = 24
24 = 12 * 2 -> 12 + 2 = 14
24 = 6 * 2 * 2 -> 6 + 2 + 2 = 10
24 = 6 * 4 -> 6 + 4 = 10
24 = 3 * 2 * 2 * 2 -> 3 + 2 + 2 + 2 = 9
24 = 3 * 4 * 2 -> 3 + 4 + 2 = 9
24 = 3 * 8 -> 3 + 8 = 11
Kita bisa mendapatkan angka-angka berikut dengan cara ini:
24, 14, 11, 10, 9
Itu adalah total 5 angka, jadi hasil kami adalah 5.
Tugas
Tulis program atau fungsi yang mengambil n sebagai input dan mengembalikan jumlah hasil yang dapat diperoleh dengan cara ini.
Ini adalah pertanyaan kode-golf sehingga jawaban akan dinilai dalam byte, dengan lebih sedikit byte yang lebih baik.
Urutan OEIS
code-golf
math
factoring
code-challenge
sequence
polyglot
rosetta-stone
code-golf
string
browser
code-golf
date
code-golf
base-conversion
code-challenge
cops-and-robbers
hello-world
code-golf
cops-and-robbers
hello-world
Ad Hoc Garf Hunter
sumber
sumber
2,2,3,3 -> 10
,2,6,3 -> 11
,2,2,9 -> 13
,12,3 -> 15
,2,18 -> 20
,36 -> 36
(2*3)+(2*3)=12
harus ada dalam daftar juga.Jawaban:
Brachylog , 8 byte
Cobalah online!
Penjelasan
Saya tidak sepenuhnya yakin mengapa
~×
hanya menghasilkan daftar dengan elemen di atas 1, tetapi tampaknya melakukannya, yang bekerja sangat baik dalam tantangan ini.sumber
Gaia ,
91413 byteBug diperbaiki dengan biaya 5 byte berkat Jonathan Allan, kemudian 1 byte di-golf.
Cobalah online! atau coba sebagai test suite
Penjelasan
sumber
[6 6]
Jelly ,
11 1514 byte+4 byte memperbaiki bug (mungkin cara yang lebih baik?)
-1 byte dengan menyalahgunakan simetri
Tautan monadik yang mengambil dan mengembalikan bilangan bulat positif
Cobalah online! atau lihat test suite
Bagaimana?
Memperbarui ...
sumber
Python 2 , 206 byte
Cobalah online!
Penjelasan
sumber
Mathematica, 110 byte
sumber
JavaScript (ES6) 107 byte
Tidak Disatukan:
Kasus uji:
Tampilkan cuplikan kode
Untuk memverifikasi bahwa fungsi menghitung jumlah yang benar, kami dapat menampilkan kunci objek alih-alih
t
:sumber
Python 3 , 251 byte
Cobalah online!
Desainnya dasar:
faktorisasi n menjadi faktor prima (faktor prima dapat muncul beberapa kali
16 -> [2,2,2,2]
:). Itulah fungsinyaf
.hitung partisi dari daftar faktor prima, dan gandakan faktor di setiap partisi. Partisi ditemukan seperti di /programming//a/30134039 , dan produk dihitung dengan cepat. Itulah fungsinya
t
.Fungsi terakhir mendapatkan produk dari setiap partisi n dan menjumlahkannya, mendapatkan jumlah nilai yang berbeda.
Hasilnya
2310=2*3*5*7*11
adalah49
.EDIT : Mungkin perlu diperbaiki, tapi saya tidak punya waktu untuk melihatnya sekarang (saya sedang terburu-buru). Petunjuk: apakah hasilnya benar
2310=2*3*5*7*11
? Saya rasa tidak.EDIT2 : Perbaikan besar. Lihat di atas. Versi sebelumnya (buggy) adalah: Coba online!
f
menghitung faktor (, dengan(0, n)
bukan(1, n)
sebagai elemen pertama.Lambda membagi masing-masing faktor menjadi "sub-faktor" dan menjumlahkan "sub-faktor" tersebut.
sumber