definizioni
Lasciate m
ed n
essere numeri interi positivi. Diciamo che m
è una svolta del divisoren
se esistono numeri interi 1 < a ≤ b
tali che n = a*b
e m = (a - 1)*(b + 1) + 1
. Se si m
può ottenere n
applicando zero o più colpi di scena divisori, allora m
è un discendente di n
. Si noti che ogni numero è il proprio discendente.
Ad esempio, considera n = 16
. Possiamo scegliere a = 2
e b = 8
, da allora 2*8 = 16
. Poi
(a - 1)*(b + 1) + 1 = 1*9 + 1 = 10
che mostra che 10
è una svolta del divisore di 16
. Con a = 2
e b = 5
, vediamo quindi che 7
è una svolta del divisore di 10
. Quindi 7
è un discendente di 16
.
L'obiettivo
Dato un numero intero positivo n
, calcola i discendenti di n
, elencati in ordine crescente, senza duplicati.
Regole
Non è consentito utilizzare le operazioni integrate che calcolano i divisori di un numero.
Sono accettati programmi e funzioni completi e è consentita la restituzione di un tipo di dati di raccolta (come un set di qualche tipo), purché sia ordinato e duplicato. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi 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]
<
per i numeri naturali, per ogni n si ottiene ogni numero più piccolo di esso ma non se stesso. Penso che questo dovrebbe essere qualcosa di simile. In questo modo penso che solo 4 sarebbe il suo discendente (non ne sono sicuro, però).