Questa è la mia prima sfida!
sfondo
Il numero perfetto è un numero intero positivo, che è uguale alla somma di tutti i suoi divisori, tranne se stesso.
Quindi 6è il numero perfetto, da allora 1 + 2 + 3 = 6.
D'altra parte 12no, perché 1 + 2 + 3 + 4 + 6 = 16 != 12.
Compito
Il tuo compito è semplice, scrivi un programma che, per scontato n, stamperà uno di questi messaggi:
Sono un numero perfetto, perché
d1 + d2 + ... + dm = s == n
non sono un numero perfetto, perchéd1 + d2 + ... + dm = s [<>] n
Dove
d1, ... dmsono tutti i divisori di ntranne n.
sè la somma di tutti i divisori d1, ..., dm(di nuovo, senza n).
[<>]è <(se s < n) o >(se s > n).
Esempi
Per nessere 6: "Sono un numero perfetto, perché 1 + 2 + 3 = 6 == 6"
Per nessere 12: "Non sono un numero perfetto, perché 1 + 2 + 3 + 4 + 6 = 16> 12"
Per nessere 13: "Non sono un numero perfetto, perché 1 = 1 <13"
Regole
nnon è più grande dello standard della tua linguaint.- Puoi leggere
ndallo standard input, dagli argomenti della riga di comando o da un file. - Il messaggio di output deve essere stampato sull'output standard e nell'output non possono comparire caratteri aggiuntivi (potrebbe contenere spazi vuoti o newline finali)
- Non è possibile utilizzare funzioni incorporate o di libreria che possano risolvere l'attività (o la sua parte principale). No
GetDivisors()o qualcosa del genere. - Si applicano tutte le altre lacune standard .
Vincitore
Questo è code-golf, quindi vince il codice più breve in byte !
=e ==nella stessa equazione? Non ha senso. Dovrebbe essere l' d1 + d2 + ... + dm = s = nIMO.