Script Python - Calcular Número Perfeitos

sexta-feira, outubro 10, 2008 13:16

O que é um número perfeito?
R: É um número que tem ele mesmo como resultado da soma de todos os seus divisores.
Ex. 6.
Divisores de 6: 1, 2 e 3.
1 + 2 + 3 = 6.


#!/usr/bin/env python
#-*- coding: utf-8 -*-

#Criado em Sex 2008-10-10 12:15 GMT -4
#Autor Renan Fernandes renan@kauamanga.com.br http://www.kauamanga.com.br
#Função: Verificar números perfeitos

#funcao para o calcula, ela recebe o "numero" que será calculado
def calcula(numero):
    #define a varivel resultado como 0, nela contera a soma dos divisores
    resultado = 0;
    #define a variavel valores como vazia, nela contera os divisores
    valores="";
    #inicia um intervalo entre 1 e o numero a ser calculado
    for i in range(1,numero):
        #se o numero atual em "i" for um divisor exato de "numero"
        if numero % i == 0:
            #acrescenta à variavel "resultado" o valor
            resultado += i;
            #caso a variavel valores ainda esteja vazia ele so adiciona o número, pra ficar "1 + 2 ..." em vez de " + 1 + 2 ..."
            if valores == "":
                valores=str(i);
            else:
                valores += " + " + str(i);

    #caso a soma de todos os divisores seja igual ao numero
    if resultado == numero:
        return str(numero) + " é um número perfeito.\n" + str(valores);
    #caso contrario retorna vazio
    else:
        return "";

print "Digite até qual número você quer saber quais são perfeitos.";

#pega o número
valor = int(raw_input());
#comeca um intervalo entre 1 e o numero digitado
for i in range(1,valor):
    #limpa/cria a variavel resposta
    resposta = ""
    #chama a funcao calcula() e coloca o resultado na variavel resposta
    resposta = str(calcula(i));
    #se a varivel resposta não voltou vazia então imprime o retorno.
    if resposta != "":
        print resposta;

Exemplo de saida:
renan@debian:~/Trabalhos/Python$ ./numeros_perfeitos.py
Digite até qual número você quer saber quais são perfeitos.
1000000
6 é um número perfeito.
1 + 2 + 3
28 é um número perfeito.
1 + 2 + 4 + 7 + 14
496 é um número perfeito.
1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
8128 é um número perfeito.
1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064


Posts relacionados


Você pode comentar, ou pingar do seu prórpio site.

Deixe um comentario.