Un défi simple mais espérons-le, pas tout à fait trivial:
Ecrivez un programme ou une fonction qui additionne les kpuissances divisant un nombre n. Plus précisement:
- Entrée: deux entiers positifs
netk(ou une paire ordonnée d’entiers, etc.) - Sortie: la somme de tous les diviseurs positifs de
nqui sont leskpuissances 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 39916800et 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.