Números superiores altamente compostos

12

Um número superior e altamente composto é um número inteiro em que a proporção de sua contagem de divisores e alguma potência do número é a mais alta possível. Expressando isso como uma fórmula:

Seja d (n) o número de divisores de n, incluindo o próprio número. Para um número inteiro n, se existe um número e tal que d (n) / n ^ e é maior ou igual a d (k) / k ^ e para cada número inteiro k, então n é um número altamente composto.

Para saber mais, consulte Número altamente composto superior na Wikipedia ou A002201 na OEIS.

Aqui estão os valores iniciais:

2, 6, 12, 60, 120, 360, 2520, 5040, 55440, 720720, 1441440, 4324320, 21621600, 367567200, 6983776800, 13967553600, 321253732800, 2248776129600, 65214507758400, 195643523275200, 6064949221531200

Seu desafio é pegar um índice n e gerar o enésimo número nessa sequência.

Você pode usar a indexação 0 ou 1 e criar um programa que esteja correto apenas até os limites do (s) tipo (s) de dados do seu idioma, desde que ele consiga lidar com os 10 primeiros valores no mínimo.

Isso é código de golfe. Aplicam-se brechas padrão .

isaacg
fonte

Respostas:

3

Mathematica, 277 bytes

(A=AppendTo;p[f_]:=Module[{p=f[[1]],k=f[[2]]},N[Log[(k+2)/(k+1)]/Log[p]]];m=#;f={{2,1},{3,0}};o=1;l={2};x=Table[p[f[[i]]],{i,o+1}];For[n=2,n<=m,n++,i=Position[x,Max[x]][[1,1]];A[l,f[[i,1]]];f[[i,2]]++;If[i>o,o++;A[f,{Prime[i+1],0}];A[x,p[f[[-1]]]]];x[[i]]=p[f[[i]]]];Times@@l)&

entrada

[21]

resultado

6064949221531200

entrada

[50]

resultado

247899128073275948560051200231228551175691632580942972608000

J42161217
fonte