miiiiiiiiiiia Posted July 5, 2011 Report Share Posted July 5, 2011 Este programa informa ao usuário se o número é perfeito ou não ; O que está acontecendo é que quando eu digito 6 como valor ele está declarando perfeito . O que é real .Já ao digitar 28 , ele diz que o número não é perfeito . porém, 28 é perfeito . Alguém consegue analisar ?número perfeito é quando a soma de seus divisores é igual a ele mesmo #include <iostream> using namespace std; bool perfeito(int v) { int cont, acum=0; for (cont=1;cont<=v/2;cont++) { acum=acum+cont; }if (acum==v) { return true; }else { return false; } } int main(){ int v; cout<<"Informe um valor"; cin>>v; if (perfeito(v)==true){ cout<<"\nPerfeito"; }else if (perfeito(v)==false){ cout<<"não perfeito"; return 0; } } Quote Link to comment Share on other sites More sharing options...
0 pedromss Posted July 6, 2011 Report Share Posted July 6, 2011 Não faz sentido o que você está fazendo dentro do for com cont. Você está somando todos os números de 1 até v/2, mas você só pode somar se o número for um divisor de v. O for tem de ir até o número menos 1 e primeiro verifica se é um dividor pra depois somar. Dá uma olhada:#include <iostream> using namespace std; bool perfeito(int v) { int cont, acum=0; for (cont = 1; cont < v; cont++) { if ((v % cont) == 0) { acum += cont; } } if (acum==v) { return true; } else { return false; } } int main() { int v; cout << "Informe um valor: "; cin >> v; if (perfeito(v)==true) { cout << "\nPerfeito\n"; } else if (perfeito(v)==false) { cout << "\nNao perfeito\n"; return 0; } } Quote Link to comment Share on other sites More sharing options...
Question
miiiiiiiiiiia
Este programa informa ao usuário se o número é perfeito ou não ;
O que está acontecendo é que quando eu digito 6 como valor ele está declarando perfeito . O que é real .
Já ao digitar 28 , ele diz que o número não é perfeito . porém, 28 é perfeito .
Alguém consegue analisar ?
número perfeito é quando a soma de seus divisores é igual a ele mesmo
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.