Definição
Um número inteiro positivo n
é um número prático (sequência OEIS A005153 ) se todos os números inteiros positivos menores puderem ser representados como somas de divisores distintos de n
.
Por exemplo, 18
é um número prático: seus divisores são 1, 2, 3, 6, 9 e 18, e os outros números inteiros positivos menores que 18 podem ser formados da seguinte forma:
4 = 1 + 3 5 = 2 + 3 7 = 1 + 6
8 = 2 + 6 10 = 1 + 9 11 = 2 + 9
12 = 3 + 9 = 1 + 2 + 9 = 1 + 2 + 3 + 6
13 = 1 + 3 + 9 14 = 2 + 3 + 9 15 = 6 + 9
16 = 1 + 6 + 9 17 = 2 + 6 + 9
Mas 14
não é um número prático: seus divisores são 1, 2, 7 e 14, e não há subconjunto deles que se soma a 4, 5, 6, 11, 12 ou 13.
Desafio
Escreva um programa, função ou verbo que tenha como entrada um número inteiro positivo x
e retorne ou imprima o xésimo número prático, indexado de 1 para consistência com o OEIS. Seu código deve ser suficientemente eficiente para lidar com entradas de até 250000 em menos de dois minutos em um computador desktop razoável. (Nota: minha implementação de referência em Java gerencia 250000 em menos de 0,5 segundos, e minha implementação de referência em Python gerencia em 12 segundos).
Casos de teste
Input Expected output
1 1
8 18
1000 6500
250000 2764000
1000000 12214770
3000000 39258256