Memasukkan
Bilangan bulat tunggal .
Keluaran
Jumlah maksimum bilangan bulat positif berbeda yang memiliki produk .
Contohnya
Input: 1099511627776. Keluaran: 9. Satu kemungkinan daftar faktor optimal adalah: (1, 2, 4, 8, 16, 32, 64, 128, 4096).
Input: 127381. Output 4. Salah satu daftar faktor optimal yang mungkin adalah: (1, 17, 59, 127).
Terkait dengan pertanyaan lama ini .
code-golf
. Anda dapat mempertimbangkan salah satufastest-code
ataufastest-algorithm
untuk tantangan yang akan datang. Jika Anda benar-benar ingin semua jawaban berfungsi dalam waktu terbatas dalam rentang yang ditentukan, seharusnya jawaban itu disebutkan secara eksplisit. (Dan saya akan merekomendasikan kisaran yang lebih kecil sehingga tidak bertentangan dengancode-golf
sepenuhnya.)x=1, 2, ...
saya mendapatkanf(x)=1, 2, 2, 2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 2, 3, 2, 3, 3, 3, 2, 4, 2, 3, 3, 3, 2, 4, 2, 3, 3, 3, 3, 4, 2, 3
yang tidak saya temukan di OEIS. Cukup jelas bahwa catatan akan muncul untuk nomor faktorialx
. Misalnya yang terkecilx
yangf(x)=13
akan13!
. Saya kiraf
hanya bergantung pada eksponen faktorisasi utama. Jadi untuk menemukanf(13^4*19^7*29^2)
kita mungkin menyederhanakannyaf(2^7*3^4*5^2)
.Jawaban:
Bahasa Wolfram (Mathematica) , 52 byte
Cobalah online!
4-byte disimpan berkat @attinat
Berikut ini juga versi 153 byte yang menghitung
1099511627776
dan10^15
Cobalah online!
Hasilnya
10^15
adalah 12sumber
Bahasa Wolfram (Mathematica) , 38 byte
Cobalah online!
Algoritma serakah. Waktu habis pada TIO pada input yang lebih besar seperti
1099511627776
.sumber
05AB1E , 9 byte
Sangat tidak efisien. Akan kehabisan waktu di TIO untuk angka dengan sejumlah besar pembagi.
Cobalah online!
Penjelasan
sumber
€gZ
sedikit lebih efisien daripadaéθg
bytecount yang sama.Perl 6 , 38 byte
Cobalah online!
Mengambil pendekatan serakah untuk memilih pembagi.
sumber
Javascript (ES6), 39 byte
Mungkin ada beberapa byte yang bisa disimpan di sana-sini. Gunakan saja algoritma serakah untuk faktor-faktornya.
sumber
Jelly , 9 byte
Cobalah online!
-1 byte terima kasih kepada seseorang
-2 byte terima kasih kepada ErikTheOutgolfer
sumber
ÆE×8‘½’:2S‘
(itu bekerja dengan kekuatan bagian "formula" OEIS untuk A003056). Penafian: itu mungkin salah, tetapi bekerja pada kasus uji.ÆD
, itu tidak seperti ada lebih banyak partisi yang akan dibuat seperti ini, itu hanya akan mengambil lebih banyak waktu (waktu untukJapt
-h
, 13 byteCobalah
sumber
Brachylog , 8 byte
Cobalah online!
(Pendekatan naif
{~×≠l}ᶠ⌉
,, menghasilkan sejumlah solusi tanpa batas dengan tambahan 1s sebelum dihilangkan dengan≠
, dan dengan demikian gagal untuk benar-benar berakhir. Namun, itu bukan masalah, karena itu untuk jumlah byte yang sama!)Mengambil input melalui variabel input dan output melalui variabel output. Header di TIO berisi salinan sebagian besar kode demi menunjukkan kepada Anda apa daftar faktornya, tetapi ini berfungsi dengan baik tanpa itu. Karena
⊇
memberikan sublists yang lebih besar terlebih dahulu, predikat ini pada dasarnya melakukan hal yang sama dengan sebagian besar jawaban lainnya, tetapi tanpa secara eksplisit menghasilkan dan memfilter set lengkap faktor, berkat backtracking.sumber
Scala , 77 byte
Cobalah online!
sumber
Gaia ,
109 byteCobalah online!
Mengikuti "algoritme" yang sama seperti yang terlihat di tempat lain - saring pembagi powerset paling lama dengan produk yang sama dengan jumlahnya dan kembalikan panjangnya.
sumber
Clam , 15 byte
TIO link segera hadir (ketika dennis menarik)
Pada dasarnya port dari solusi 05AB1E @ Emigna.
Penjelasan
sumber
C # (Visual C # Interactive Compiler) , 54 byte
Menggunakan pendekatan yang sama dengan jawaban @ vrugtehagel dan @ JoKing.
Cobalah online!
sumber
Ruby , 34 byte
Jelas sekali ada angka yang sangat besar, tetapi pada akhirnya akan habis jika diberikan waktu yang cukup pada mesin lain.
Cobalah online!
sumber