Una sfida semplice ma speriamo non abbastanza banale:
Scrivi un programma o una funzione che somma i k
poteri che dividono un numero n
. Più specificamente:
- Input: due numeri interi positivi
n
ek
(o una coppia ordinata di numeri interi, ecc.) - Output: la somma di tutti i divisori positivi
n
che sonok
i poteri di numeri interi
Ad esempio, 11! = 39916800 ha sei divisori che sono cubi, cioè 1, 8, 27, 64, 216 e 1728. Pertanto determinati input 39916800
e 3
, il programma dovrebbe restituire loro somma, 2044
.
Altri casi di test:
{40320, 1} -> 159120
{40320, 2} -> 850
{40320, 3} -> 73
{40320, 4} -> 17
{40320, 5} -> 33
{40320, 6} -> 65
{40320, 7} -> 129
{40320, 8} -> 1
{46656, 1} -> 138811
{46656, 2} -> 69700
{46656, 3} -> 55261
{46656, 4} -> 1394
{46656, 5} -> 8052
{46656, 6} -> 47450
{46656, 7} -> 1
{1, [any positive integer]} -> 1
Questo è il golf del codice, quindi più breve è il codice, meglio è. Accolgo con favore il codice golf in tutti i tipi di lingue diverse, anche se qualche altra lingua può cavarsela con meno byte della tua.