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 12
no, 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, ... dm
sono tutti i divisori di n
tranne n
.
s
è la somma di tutti i divisori d1, ..., dm
(di nuovo, senza n
).
[<>]
è <
(se s < n
) o >
(se s > n
).
Esempi
Per n
essere 6
: "Sono un numero perfetto, perché 1 + 2 + 3 = 6 == 6"
Per n
essere 12
: "Non sono un numero perfetto, perché 1 + 2 + 3 + 4 + 6 = 16> 12"
Per n
essere 13
: "Non sono un numero perfetto, perché 1 = 1 <13"
Regole
n
non è più grande dello standard della tua linguaint
.- Puoi leggere
n
dallo 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 = n
IMO.