Torna alle sfide
Facile 0 risolte 0% di accettazione

Classifica un Numero in base ai suoi Divisori

Classifica un intero positivo come perfetto, abbondante o deficiente.

Cosa imparerai

  • Trovare tutti i divisori propri di un numero
  • Velocizzare la ricerca dei divisori con la radice quadrata
  • Classificare i risultati con condizioni

Problema

Somma i divisori positivi di n che sono strettamente minori di n. Se la loro somma è uguale a n, il numero è perfetto. Se la somma è maggiore, è abbondante; se è minore, è deficiente. Il numero 1 non ha divisori propri positivi, quindi la somma dei suoi divisori è 0.

Implementa perfect_number(n).

Input

n: L'intero positivo da classificare.

Output

Restituisci perfect, abundant o deficient come testo minuscolo.

Vincoli

1 ≤ n ≤ 1.000.000. Valori zero e negativi sono esclusi.

Esempi

Esempio 1
Input:
n = 18

Output atteso:
expected = "abundant"
Input:
long long n = 18;

Output atteso:
std::string expected = "abundant";
Input:
long n = 18;

Output atteso:
string expected = "abundant";

Spiegazione

I divisori propri sono 1, 2, 3, 6 e 9. La loro somma è 21, maggiore di 18.

Esempio 2
Input:
n = 28

Output atteso:
expected = "perfect"
Input:
long long n = 28;

Output atteso:
std::string expected = "perfect";
Input:
long n = 28;

Output atteso:
string expected = "perfect";

Spiegazione

La somma dei divisori propri è 1 + 2 + 4 + 7 + 14 = 28, esattamente il numero stesso.

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

Trova i divisori propri di n e confronta la loro somma con n per decidere la classe.

Suggerimento 2

Ti basta cercare i divisori fino alla radice quadrata, accoppiando ogni divisore con il suo complemento.

Suggerimento 3

Tratta 1 con attenzione, perché non ha divisori positivi propri e la sua somma dei divisori è zero.

Complessità attesa

tempo O(√n), spazio aggiuntivo O(1)

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.