Un défi simple mais espérons-le, pas tout à fait trivial:
Ecrivez un programme ou une fonction qui additionne les k
puissances divisant un nombre n
. Plus précisement:
- Entrée: deux entiers positifs
n
etk
(ou une paire ordonnée d’entiers, etc.) - Sortie: la somme de tous les diviseurs positifs de
n
qui sont lesk
puissances des nombres entiers
Par exemple, 11! = 39916800 a six diviseurs qui sont cubes, à savoir 1, 8, 27, 64, 216 et 1728. Par conséquent les entrées données 39916800
et 3
, le programme devrait retourner leur somme, 2044
.
Autres cas de 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
C'est du code golf, donc plus votre code est court, mieux c'est. Je souhaite la bienvenue au code golfé dans toutes sortes de langues, même si une autre langue peut s’en tirer avec moins d’octets que le vôtre.