1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

programa de calculo de numeros perfeitos até...

Discussão em 'Programação' iniciada por Masato, 24 de Setembro de 2012. (Respostas: 2; Visualizações: 1097)

  1. Boa tarde

    Eu estou a fazer um programa que conta os numeros perfeitos até um determinado numero

    um numero perfeito é aquele em que a soma dos seus divisores dão um resultado igual ao proprio numero, por exempo 6= 3+2+1 em que o 1,2, 3 são os divisores de 6.
    Eo programa que escrevi só conta um numero perfeito até 30, ou seja introduzo o 30 e só retorna um numero perfeito ( o 6 creio eu), e devia retor nar dois numeros perfeitos ( o 6 e o 28)

    O meu código é o seguinte:

    static int perfectNumbersUpTo (int t)
    {
    int b=0;
    int g =sumDivisors(b);
    int f=0;
    int d=0;
    while (f<t)
    {
    if (g==f)
    {
    d=d+1;
    f=f+1;

    }
    else
    {
    f=f+2;
    }

    }
    return d;
    }

    ps:este programa corre num ambiente no aguiaj que é um plug in do eclipse desenvolvido na minha faculdade, por isso a sintaxe pode não ser bem a que vocês estão habituados, mas seja como for gostava que me ajudassem com o algoritmo.
     
  2. fmf1966

    fmf1966 Power Member

    Essa função retorna o valor 1 porque estás a começar pelo 0(zero).
    Ora vê lá: Numero perfeito é um numero inteiro em que a soma dos seus divisores, excluindo ele mesmo, é igual ao próprio número.
    0 -> divisores - =0 ??
    1 -> divisores - =0 não
    2 -> divisores 1=1 Não
    ...
    6 -> divisores 1+2+3=6 perfeito!
    ..


    Zero não entra nessa sequência.

    A tua função para funcionar tem de a obter a soma dos divisores sempre que incrementas b,
    por isso, coloca a instrução g=sumDivisors(b) dentro do ciclo while{} e inicializa as variáveis int b=1 e int f=1.

    Edit: Olhando bem para a tua função e como o incremento é feito de 2 em 2, inicializa b e f com 2, bem como dentro do if o f=f+2, porque nenhum numero perfeito conhecido é impar.
     
    Última edição: 24 de Setembro de 2012
  3. Obrigado por responderes, ainda não testei mas o meu prof da cadeira tb me disse o mesmo que tu, amanhã vou testar e tentar chegar ao resultado
     

Partilhar esta Página