Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DaniloTec

Números perfeitos

Recommended Posts

Estou com problema para fazer um programa que verifica todos os números perfeitos entre 1 e 100.A lógica parece estar certa, porém, não escreve nada na tela.Eis o código:#include<stdio.h>#include<stdlib.h>main(){int num,cont,soma;soma=0;for (num=1;num<=100;num++){ for (cont=1;cont<num;cont++) { if (num%cont==0) soma=soma+cont; if (soma==num) printf("%d\n",num); }}system("PAUSE");}Alguém sabe me dizer onde está o erro?Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

#include<stdio.h>#include<stdlib.h>void main(){int num,cont,soma;soma=0;for (num=1;num<=100;num++){for (cont=1;cont<num;cont++){if (num%cont==0)soma=soma+cont;if (soma==num)printf("%d\n",num);}}system("PAUSE");}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou.O engraçado é que se eu fizer o mesmo programa pedido para o usuário digitar um número ele funciona.#include<stdio.h>#include<stdlib.h>main(){int num,cont,soma;soma=0; printf("Digite um numero: "); scanf("%d",&num); for (cont=1;cont<num;cont++) { if (num%cont==0) soma=soma+cont; } if (soma==num) printf("%d\n",num);system("PAUSE");}Agora não sei se o orro está na lógica ou na estrutura do programa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá:

 

#include<stdio.h>#include<stdlib.h>void main(){int num,cont,soma;soma=0;	printf("Digite um numero: ");	scanf("%d",&num);		for (cont=1;cont<num;cont++)	{		if (num%cont==0)		   soma=soma+cont;	}				   if (soma==num)			  printf("%d\n",num);system("PAUSE");getch()}

Ou

 

#include<stdio.h>#include<stdlib.h>void main(){int num,cont,soma;soma=0;for (num=1;num<=100;num++){for (cont=1;cont<num;cont++){if (num%cont==0)soma=soma+cont;if (soma==num)printf("%d\n",num);}}system("PAUSE");getch();}

Aqui pra mim tá dando sem erros, mas não está funcionando. Não entendi também o que está acontecendo, acredito que seja um erro de lógica mesmo, se você tiver algo parecido aí dá uma olhada no código inteiro.

posta pra mim exatamente o que você quer com esse programa, vou ver se faço algo aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você viu que o programa que o usuário digita o número funciona,não é?!Eu quero fazer um programa que verifica todos os números perfeitos entre 1 e 100.Só isso! rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

não não, rsrsesses que você disse são números primos.números perfeitos são números que quando somamos os seus dividendos dá ele mesmo.ex.6 é dividido por 1,2,31+2+3=628 é dividido por 1,2,4,7,141+2+4+7+14=28entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei!

Quer dizer, achei não. Perguntei pra um amigo meu da facu que é master em linguagem C.

O problema era que eu não zerava a variável soma.

 

Código antigo:

 

#include<stdio.h>

#include<stdlib.h>

 

main()

{

 

int num,cont,soma;

 

for (num=1;num<=100;num++)

{

for (cont=1;cont<num;cont++)

{

if (num%cont==0)

soma=soma+cont;

}

if (soma==num)

printf("%d\n",num);

}

system("PAUSE");

}

 

Reparem que a variável soma nunca é zerada.

 

Código que funciona, rsrs:

 

#include<stdio.h>

#include<stdlib.h>

 

main()

{

 

int num,cont,soma;

 

for (num=1;num<=100;num++)

{

for (soma=0,cont=1;cont<num;cont++)

{

if (num%cont==0)

soma=soma+cont;

}

if (soma==num)

printf("%d\n",num);

}

system("PAUSE");

}

 

Agora sim o código funciona.

 

Valew a ajuda! Té mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.