A savoir:
Tout d'abord, les numéros porte-bonheur.
Les numéros porte-bonheur sont générés comme suit:
Prenez tous les nombres naturels:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20...
Ensuite, supprimez chaque deuxième numéro.
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39...
Maintenant, 3
c'est sûr.
Supprimez chaque 3e numéro:
1, 3, 7, 9, 13, 15, 19, 21, 25, 27, 31, 33, 37, 39, 43, 45, 49, 51, 55, 59...
Maintenant, 7
c'est sûr.
Supprimez tous les 7 numéros.
Continuez et supprimez chaque n
numéro, où n
est le premier numéro sûr après une élimination.
La liste finale des numéros sûrs est les numéros porte-bonheur.
Les nombres malchanceux sont composés de listes distinctes de nombres, qui le sont [U1, U2, U3... Un]
.
U1
est le premier ensemble de chiffres retiré des "candidats" chanceux, ils sont donc:
2, 4, 6, 8, 10, 12, 14, 16, 18, 20...
U2
est le deuxième ensemble de nombres supprimé:
5, 11, 17, 23, 29, 35, 41, 47, 53, 59...
Et ainsi de suite et ainsi de suite ( U3
est la troisième liste, U4
est la quatrième, etc.)
Défi:
Votre tâche consiste, lorsque deux entrées sont données m
et n
, à générer le m
numéro e dans la liste Un
.
Exemples d'entrées et sorties:
(5, 2) -> 29
(10, 1) -> 20
Spécifications:
- Votre programme doit fonctionner
m
jusqu'à1e6
etn
jusqu'à100
.- Vous êtes assuré que les deux
m
etn
sont des entiers positifs. - Si vous êtes curieux,
U(1e6, 100)
=5,333,213,163
. (Merci @pacholik!)
- Vous êtes assuré que les deux
- Votre programme doit calculer cela en 1 jour sur un ordinateur moderne et raisonnable.
C'est le code-golf , donc le code le plus court en octets gagne!
PS: Ce serait bien si quelqu'un venait avec une formule générale pour les générer. Si vous avez une formule, veuillez la mettre dans votre réponse!
(1e6,1e6)
?
n=1
cas? Comme c'est spécial - pour tous les autres cas, l'index basé sur 0 du prochain numéro porte-bonheur est n-1
.