Judul video terbaru Numberphile , 13532385396179 , adalah titik tetap dari fungsi berikut f pada bilangan bulat positif:
Biarkan n menjadi bilangan bulat positif. Tulis faktorisasi prima dengan cara yang biasa, misalnya 60 = 2 2 · 3 · 5, di mana bilangan prima ditulis dalam urutan yang meningkat, dan eksponen 1 dihilangkan. Kemudian bawa eksponen ke bawah dan hilangkan semua tanda perkalian, dapatkan angka f (n). [...] misalnya, f (60) = f (2 2 · 3 · 5) = 2235.
(Definisi di atas diambil dari Masalah 5 dari Lima Masalah $ 1.000 - John H. Conway )
Perhatikan bahwa f (13532385396179) = f (13 · 53 2 · 3853 · 96179) = 13532385396179.
Tugas
Ambil bilangan bulat komposit positif n
sebagai input, dan output f(n)
.
Contoh lain
48 = 2 4 · 3, jadi f (48) = 243.
Testcases
Lebih banyak testcases tersedia di sini .
4 -> 22
6 -> 23
8 -> 23
48 -> 243
52 -> 2213
60 -> 2235
999 -> 3337
9999 -> 3211101
sumber
Jawaban:
Python,
166162159 byteKalian jauh lebih baik. Inilah yang saya gunakan! (Algoritma yang menyelesaikannya menyebutnya ini)
sumber
Brachylog , 8 byte
Cobalah online!
Penjelasan
Anda dapat menggunakan
ℕ₂ˢ
( pilih semua bilangan bulat yang lebih besar dari atau sama dengan 2 ) daripada;1x
, yang mungkin lebih mudah dibaca dan lebih dalam semangat Brachylog.sumber
Jelly , 6 byte
Cobalah online!
Penjelasan
sumber
V
= "digabungkan ke string tunggal dan eval sebagai Jelly"Ḍ
(Konversi dari desimal ke integer)?FḌ
di masa lalu - itu tip yang bagus!Mathematica,
4336 BytesCobalah online!
sumber
DeleteCases
panjang, Anda dapat menggunakan/.1->""
atau/.1->##&[]
(bentuk alternatif dari/.1->Nothing
1
untuk mencegah parsing... / (0.1)
.CJam , 8 byte
Cobalah online!
Penjelasan
sumber
e_
untuk meratakan, karena memang untuk itu, tetapi itu tidak mengubah skor.e_
deep ratten saja dan digunakan:~
setiap kali hanya satu level.05AB1E , 10 byte
Cobalah online!
sumber
05AB1E ,
1211 byteCobalah online!
Penjelasan
sumber
48
.Pyth, 12 byte
Cobalah!
alternatif, 12 byte
Coba itu!
penjelasan
sumber
Pyth, 11 byte
Coba di sini
sumber
Python 2 , 99 byte
Cobalah online!
Jika input dibatasi di bawah
2147483659
, keduanyastr(...)
dapat diganti dengan`...`
menghemat 6 byte (program ini akan sangat lambat untuk angka yang terpengaruh!).sumber
Ohm , 11 byte
Cobalah online!
Penjelasan
sumber
Japt , 19 byte
Uji secara online!
Penjelasan
sumber
PHP , 88 byte
Cobalah online!
sumber
C #,
206100 byteVersi Lengkap / Terformat:
sumber
Javascript - 91 byte
Penjelasan
sumber
Java 8, 103 karakter
Solusi yang sangat mudah.
Tidak Disatukan:
sumber
Oktaf , 69 byte
Cobalah online!
Akhirnya menjadi cukup lama, tetapi ini akan menghasilkan output yang diinginkan.
Pada dasarnya kami menggunakan fungsi histogram untuk menghitung jumlah kemunculan dari nilai-nilai unik dalam faktorisasi utama dari nilai input.
factor()
fungsi memberikan faktor prima dalam urutan menaikunique()
nilai dalam array ituhist()
mengembalikan jumlah kejadianSetelah kami memiliki dua array (satu untuk faktor unik, satu untuk jumlah), kami menggabungkan array secara vertikal (satu di atas yang lain), dan kemudian meratakan. Ini interleaves faktor dengan jumlah.
Akhirnya kami menampilkan hasilnya sebagai string yang memastikan untuk melewatkan 1 di array terakhir. Satu-satunya waktu 1 dapat muncul adalah jika hitungannya 1 karena 1 tidak akan pernah menjadi faktor utama. Penghapusan ini dilakukan sebelum mengkonversi ke string sehingga tidak akan mempengaruhi hal-hal seperti angka 10.
sumber
Ruby , 45 + 7 byte
Membutuhkan bendera
-rprime
.Cobalah online!
sumber
Pyth - 16 byte
Cobalah
Solusi lain:
sumber
FN
olehV
.r8
(run-length encoding) tampaknya bermanfaat.R , 72 byte
Membutuhkan
pracma
paket, yang tidak diinstal pada TIO.sumber