Saya melihat tantangan utama lain yang muncul di PPCG, dan saya sangat menyukai saya bilangan prima. Kemudian saya salah membaca teks pengantar, dan bertanya-tanya apa otak kreatif di sini telah muncul.
Ternyata pertanyaan yang diajukan sepele, tetapi saya bertanya-tanya apakah hal yang sama berlaku untuk pertanyaan yang saya baca (salah):
6 dapat diwakili oleh 2 ^ 1 * 3 ^ 1, dan 50 dapat diwakili oleh 2 ^ 1 * 5 ^ 2 (di mana ^ menunjukkan eksponensial).
Tugas Anda:
Tulis program atau fungsi untuk menentukan berapa banyak bilangan prima yang berbeda dalam representasi angka ini.
Memasukkan:
Integer n sedemikian sehingga 1 <n <10 ^ 12, diambil dengan metode normal apa pun.
Keluaran:
Jumlah bilangan prima berbeda yang diperlukan untuk mewakili faktor prima unik n.
Kasus uji:
Input Factorisation Unique primes in factorisation representation
24 2^3*3^1 2 (2, 3)
126 2^1*3^2*7^1 3 (2, 3, 7)
8 2^3 2 (2, 3)
64 2^6 1 (2) (6 doesn't get factorised further)
72 2^3*3^2 2 (2, 3)
8640 2^6*3^3*5^1 3 (2, 3, 5)
317011968 2^11*3^5*7^2*13^1 6 (2, 3, 5, 7, 11, 13)
27 3^3 1 (3)
Ini bukan urutan OEIS.
Mencetak:
Ini adalah kode-golf , skor terendah dalam byte menang!
64
? Apakah2 (2,3)
(karena 6 dapat direpresentasikan sebagai 2 * 3) atau1 (2)
(abaikan 6)?64
hasil yang diharapkan adalah 1 (2). Saya suka ide melakukannya secara rekursif, tapi bukan itu cara saya membaca pertanyaan aslinya. Saya pikir8640
itu kasus uji yang cocok, tetapi seharusnya lebih eksplisit - terima kasih.Jawaban:
Mathematica, 39 byte
Cobalah online!
terima kasih kepada Martin Ender (-11 bytes)
sumber
Cases
ternyata lebih pendek dariSelect
(-4 byte):Tr[1^Union@Cases[FactorInteger@#,_?PrimeQ,2]]&
(melewati semua test case pada kernel baru)Count[Union@@FactorInteger@#,_?PrimeQ]&
? (Belum memeriksa semua kasus uji.)05AB1E ,
97 byteDisimpan 2 byte berkat Kevin Cruijssen
Cobalah online!
Penjelasan
sumber
€pO
setelah menggabungkan faktor prima dan eksponen:ÓsfìÙ€pO
€
tidak diperlukan.MATL , 8 byte
Cobalah online!
sumber
Jelly ,
97 byteCobalah online! atau Lihat Test suite.
Bagaimana?
sumber
Gaia , 6 byte
Cobalah online!
ḋ
menghitung faktorisasi utama, sebagai pasangan [prima, eksponen] ._
ratakan daftar.u
menghapus elemen duplikat.ṗ¦
memetakan melalui elemen dan mengembalikan 1 jika bilangan prima ditemukan, 0 sebaliknya.Σ
meringkas daftar.sumber
CJam (13 byte)
Test suite online
Ini cukup mudah: dapatkan bilangan prima dengan banyak, kurangi ke nilai yang berbeda, filter bilangan prima, hitung.
Sayangnya Martin menunjukkan beberapa kasus yang tidak ditangani oleh trik yang agak menarik dalam jawaban asli saya, meskipun ia juga memberikan penghematan 1-byte dengan mengamati bahwa sejak
mp
memberi0
atau1
dapat dipetakan daripada disaring.sumber
Ohm v2 ,
65 byte-1 byte terima kasih kepada @ Mr.Xcoder
Cobalah online!
sumber
ä{UpΣ
Sebenarnya , 7 byte
Cobalah online!
Penjelasan:
sumber
Python 2 ,
142135119 byteCobalah online!
sumber
Sekam ,
1110 byteCobalah online!
EDIT: Disimpan 1 byte berkat Zgarb .
sumber
#ṗuS+omLgp
menghemat satu byte.Brachylog , 7 byte
Cobalah online!
Versi 9 byte yang menyenangkan:
ḋọ{∋∋ṗ}ᶜ¹
sumber
Ruby
-rprime
, 66 byteCobalah online!
sumber
Pyth , 15 byte
Coba di sini!
sumber
Angka R +, 92 byte
Cobalah online!
sumber
J, 20 byte
Dihitung dengan tangan lol, jadi beri tahu saya jika ini tidak aktif.
Ada saran bermain golf?
Pengajuan membosankan: ratakan tabel faktorisasi utama dan hitung bilangan prima.
sumber
Pari / GP , 47 byte
Cobalah online!
sumber
Javascript (ES6), 145 byte
sumber