Python: esercizio. Determinare se un numero è perfetto.

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Cerca nelle Categorie

Python determinare se un numero è perfetto

Definizione di numeri perfetti

Un numero n si dice perfetto se la somma dei suoi divisori (compreso se stesso) è uguale a 2n.
Per esempio:
12 = 1 + 2 + 3 + 6;
56 = 1 + 2 + 4 + 7 + 14 + 28;
992 = 1 + 2 + 4 + 8 + … + 496;
dunque 6, 28, e 496 sono numeri perfetti.

👉 I numeri perfetti

ESERCIZIO

def getDivisors(n):
    """
    input: intero positivo 'n' >= 1
   restituisce tutti i divisori di n (compreso 1 ed 'n')
    """
    assert isinstance(n, int) and (n >= 1), "'n' must been int and >= 1"
    ans = [] 
    for divisor in range(1, n + 1):
        if n % divisor == 0:
            ans.append(divisor)
    assert ans[0] == 1 and ans[len(ans) - 1] == n, "Errore nella funzione"
    return ans
def isPerfectNumber(number):
    """
    input: intero positivo 'number' > 1
    Restituisce true se 'number' se number è perfetto altrimenti false.
    """
  
    assert isinstance(number, int) and (
        number > 1
    ), "'number' deve essere un intero >= 1"
    divisors = getDivisors(number)
    assert (
        isinstance(divisors, list)
        and (divisors[0] == 1)
        and (divisors[len(divisors) - 1] == number)
    ), "errore nella funzione "
    # sommiamo tutti i divisori fino a 'number' (escluso), quindi [:-1]
    return sum(divisors[:-1]) == number
    
number = int(input(' Scrivi un numero intero '))    
isPerfectNumber(number)

Output:

Scrivi un numero intero 56789
False


 

(631)

PubblicitàPubblicità

Ti potrebbe interessare anche:  Indici di Concentrazione Marketing & Vendite: Guida Completa ed Esercizi (Gini, HHI, CRk)