Définitions
Soit met nsoyez des entiers positifs. Nous disons que mc'est une torsion du diviseurn s'il existe des entiers 1 < a ≤ btels que n = a*bet m = (a - 1)*(b + 1) + 1. Si mpeut être obtenu à partir nde l'application de zéro ou plusieurs torsions de diviseur, alors mest un descendant de n. Notez que chaque numéro est son propre descendant.
Par exemple, réfléchissez n = 16. On peut choisir a = 2et b = 8, depuis 2*8 = 16. alors
(a - 1)*(b + 1) + 1 = 1*9 + 1 = 10
ce qui montre que 10c'est une torsion de diviseur de 16. Avec a = 2et b = 5, on voit alors que 7c'est une torsion de diviseur de 10. Ainsi 7est un descendant de16 .
La tâche
Étant donné un entier positif n, calculer les descendants den , répertoriés dans l'ordre croissant, sans doublons.
Règles
Vous n'êtes pas autorisé à utiliser des opérations intégrées qui calculent les diviseurs d'un nombre.
Les programmes complets et les fonctions sont acceptés, et le retour d'un type de données de collection (comme un ensemble quelconque) est autorisé, tant qu'il est trié et sans doublon. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Cas de test
1 -> [1]
2 -> [2] (any prime number returns just itself)
4 -> [4]
16 -> [7, 10, 16]
28 -> [7, 10, 16, 25, 28]
51 -> [37, 51]
60 -> [7, 10, 11, 13, 15, 16, 17, 18, 23, 25, 28, 29, 30, 32, 43, 46, 49, 53, 55, 56, 60]
<pour les nombres naturels, pour chaque n vous obtenez chaque nombre plus petit que lui mais pas lui-même. Je pense que cela devrait être quelque chose de similaire. De cette façon, je pense que seulement 4 serait son propre descendant (cependant, je n'en suis pas sûr).