Ir para conteúdo

POWERED BY:

Arquivado

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

Charles Arnoud

[Resolvido] Achar os divisores de um numero

Recommended Posts

galera tenho que fazer o seguinte exercicio:

1 - Para todos os inteiros positivos dentro do

intervalo 1 - 100000, indique os que são números perfeitos.

Obs.: Número perfeito é aquele cuja soma de seus divisores, exceto ele próprio, é igual ao

número.

Ex.: 6 = 1 + 2 + 3.

 

alguem da uma mao ai, nao estou conseguindo pensar em uma maneira de achar todos os divisores do numero.

 

abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 sempre é divisor.

Faça de 2 até número-1, faça número % x (sendo número o número que você quer descobrir os divisores, e x o número do loop que vai de 2 até número - 1), se for 0, então x é divisor de número, adicione-o em uma array.

No final, some todos os elementos da array e veja se é igual ao número.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tah o principio eu entendi, mas to com duas duvidas:

1 - nao eh estranho eu mandar o pc repetir uma operaçao para 100000 numeros diferentes? nao eh demais isso?

2 - eu nao consigo armazenar o valor do divisor em variaveis pq eu nunca vou saber o numero de divisores. e tipo eu nao sei como se faz esse array q você falou.

 

se puder me da uma luz ae...

ateh agora escrevi isso:

 

EDIT: dei uma lida na net sobre arrays e mudei um poko o codigo na corrida pq to nao to em casa, da uma olhada

obs: nao funcionou, ficou tudo parado.

#include <stdlib.h>
#include<stdio.h>
int main()
{
	int x, y, divisor, soma;
	printf("Numeros Perfeitos:\n");
	for (x=1; x<=100000; x++)
	{
		for (y=1; y<=x-1; y++)
		{
			if (x%y==0)
			  {
				divisor=y;
				soma=soma+divisor;
			  }
		}
		if (soma==x)
		   printf("%i  ", x);
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha.. a principio naum sei oq pode ser..

+ para testes coloque um numero menor ae..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

pronto descobri o problema.

tava faltando zerar a soma depois de cada numero testado

agora tah funcionando direitinho

pesquisando por ai, eu vi q tem algumas pessoas com duvida qto a problemas parecidos.

entao ai tah o meu codigo

#include<stdlib.h>
#include<stdio.h>
int main()
{
	int numero, divisor, soma;
	system("color f9");
	printf("Numeros Perfeitos entre 1 e 100000:\n");
	for (numero=1; numero<=100000; numero++)//testa todos numeros do intervalo
	{
		soma=0;//zera a soma a cada numero testado
		for (divisor=1; divisor<numero; divisor++)
			if (numero%divisor==0)//unico comando do segundo for
			  soma=soma+divisor;
		if (soma==numero)//parte do primeiro for
		   printf(" %i ", numero);//mostra só os numeros perfeitos
	}
	printf("\n\n");
	system("pause");
	return 0;
}

valeu pela ajuda ae, sempre util esse forum, abrazz

eh topico resolvido

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.