Numeros perfeitos – C

25 09 2008

Buenas, aula passada na cadeira de programação o prof pediu o um programa em C que verificasse se um dado numero era perfeito, lembrando que um numero é perfeito se a soma de seus divisores são iguais ao proprio numero ex: 6 = 1+ 2 + 3
segue o programa então:

#include<stdio.h>
/* Criado em:Qua 24/Set/2008 hs 22:13
 Autor: MRSantos mrsantos4@ucs.com */

int perfeito(int n);

int main(int argc, char *argv[])
{
        int x;
        x = atoi(argv[1]);

        system("clear; tput cup 20 40");

        /* ate hoje nao foi encontrada um perfeito impar
         * detalhes em: http://pt.wikipedia.org/wiki/N%C3%BAmero_perfeito
         * */
        if(x % 2 == 1)
        {
                printf("%d nao eh perfeito\n\n", x);
                return 0;
        }

        if(perfeito(x))
        {
                printf("%d eh perfeito\n\n", x);
                return 0;
        }
        else
        {
                printf("%d nao eh perfeito\n\n", x);
                return 0;
        }
        return 0;
}

int perfeito(int n)
{
        int i, soma = 0;

        for(i = 1; i <= n/2; i++)
        {
                if(n % i == 0)
                {
                        soma += i;
                }

        }
                if(soma == n)
                        return 1;
        return 0;
}

Ações

Informações

Deixe um comentário