Coisas a saber:
Primeiro, números da sorte.
Os números da sorte são gerados da seguinte forma:
Pegue todos os números naturais:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20...
Em seguida, remova cada segundo número.
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39...
Agora 3está seguro.
Remova cada terceiro número:
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, 31, 33, 37, 39, 43, 45, 49, 51, 55, 59...
Agora 7está seguro.
Remova todos os sétimos números.
Continue e remova todo nnúmero de th, onde nestá o primeiro número seguro após uma eliminação.
A lista final de números seguros são os números da sorte.
Os números azarados são compostos por listas separadas de números [U1, U2, U3... Un].
U1 é o primeiro conjunto de números removido dos "candidatos" sortudos, então eles são:
2, 4, 6, 8, 10, 12, 14, 16, 18, 20...
U2 é o segundo conjunto de números removido:
5, 11, 17, 23, 29, 35, 41, 47, 53, 59...
E assim por diante ( U3a terceira lista, U4a quarta etc.)
Desafio:
Sua tarefa é, ao receber duas entradas me ngerar o mnúmero th na lista Un.
Exemplos de entradas e saídas:
(5, 2) -> 29
(10, 1) -> 20
Especificações:
- Seu programa deve funcionar para
maté1e6enaté100.- Você tem a garantia de que ambos
mennúmeros inteiros positivos. - Se você está curioso,
U(1e6, 100)=5,333,213,163. (Obrigado @pacholik!)
- Você tem a garantia de que ambos
- Seu programa deve calcular isso dentro de 1 dia em um computador moderno razoável.
Isso é código-golfe , então o código mais curto em bytes vence!
PS: Seria bom se alguém apresentasse uma fórmula geral para gerá-las. Se você tem uma fórmula, coloque-a na sua resposta!
(1e6,1e6)?
n=1caso? Como isso é especial - para todos os outros casos, o índice baseado em 0 do próximo número da sorte é n-1.