# arquivo: perfeito2.py
# -------------------
# Dado um inteiro n > 0, este programa verifica se 
# n e' perfeito. Dizemos que n e' perfeito se n  e'
# igual `a soma de seus divisores estritamente menores que n. 
# Ex: n = 6 e' perfeito, pois n = 6 = 1 + 2 + 3. 
# Ex: n = 28 e 'perfeito,  pois n = 28 = 1 + 2 + 4 + 7 + 14

def main():
    #     n:    inteiro a ser testado se e' perfeito 
    #     d:	   candidato a divisor de n
    #   soma:   soma dos divisores (menores que n)

    n = int(input("Digite o valor de n (um inteiro < 1000): ")) 
    soma = 0
    d = 1
    while d <= (n//2):
        if (n % d == 0):
            soma = soma + d
            print ("divisor = %3d  soma atual = %5d " %(d,soma))
        d = d + 1 
    if soma == n:
        print(n, "e' perfeito.") 
    else:
        print(n, "nao e' perfeito.")
# ---------------------------------------
main()

#  ----------------------------------
# -------------------------------------

# OBS: Note que os candidatos a divisor ocorrem ate' n//2
# OBS: veja a funcao print dentro do comando while:
# Vejam a especificacao dosformatos %3d e %5d para numeros inteiros.
# Notem que ficaram entre os apo'strofes duplos, e notem como
# foram especificados as varia'veis correspondentes a esses formatos
# (precedidas de % e entre pareˆnteses por serem pelo menos duas).
# Notem a ause^ncia de vi'rgulas antes da especificacao das varia'veis.
