Définitions
Soit m
et n
soyez des entiers positifs. Nous disons que m
c'est une torsion du diviseurn
s'il existe des entiers 1 < a ≤ b
tels que n = a*b
et m = (a - 1)*(b + 1) + 1
. Si m
peut être obtenu à partir n
de l'application de zéro ou plusieurs torsions de diviseur, alors m
est un descendant de n
. Notez que chaque numéro est son propre descendant.
Par exemple, réfléchissez n = 16
. On peut choisir a = 2
et b = 8
, depuis 2*8 = 16
. alors
(a - 1)*(b + 1) + 1 = 1*9 + 1 = 10
ce qui montre que 10
c'est une torsion de diviseur de 16
. Avec a = 2
et b = 5
, on voit alors que 7
c'est une torsion de diviseur de 10
. Ainsi 7
est 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).