Ir para conteúdo
Fórum Script Brasil
  • 0

Numeros perfeitos


pedrohb6

Pergunta

Faça um programa que leia 10 números inteiros positivos, calcule e escreva os que são números perfeitos. Sendo que, um número perfeito é aquele cuja soma de seus divisores, exceto ele próprio, é igual ao número. Exemplo: 6 é perfeito porque 1 + 2 + 3 = 6 28 é perfeito porque 1 + 2 + 4 + 7 + 14 = 28...

CÓDIGO ABAIXO: ----- o que esta errado??

#include <stdio.h>
#include <stdlib.h>


int main() {
    
    int numInt[10];
    int numPerf[10];
    int x, y;
    int aux=0;
    
    
    
    printf("\tNUMEROS PERFEITOS\n\n");
    printf("Digite 10 numeros positivos maior que 0\n");
    
    for(x=1; x<=10; x++)
        scanf("%d", &numInt[x]);
    
    for(y=1; y< (numInt[x]); y++){
            if(numInt[x]%y == 0){            
                aux=aux+y;
                    if(aux=aux+y == numInt[x]){
                    
                        numPerf[x] = numInt[x];
   }
 }
}

    for(x=1; x<=10; x++){    
    printf("\n%d", numPerf[x]);
}
            
    return 0;
}

não terminei ainda o codigo, mas aqui já ta imprimindo errado a matriz.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

No seu código faltou o acumulador para verificar se a soma dos divisores é igual ao dividendo,

observe o código abaixo.

#include <stdio.h>

bool isPerfeito(int numero){
	int soma=0;
	for(int i=1; i<numero; i++){
		if( (numero%i)==0){
			soma+=i;
		}
	}
	return (numero==soma);
}

int main(){
	//quantidade de números que serão informados.
	int quantidadeNumeros=10; 
	//vetor que irá armazenar os números informados pelo usuário.
	int vetorDeNumeros[quantidadeNumeros];
	
	//vamos contar a quantidade de números que serão perfeitos, dentro do espaço amostral que o usuário forneceu.
	int quantidadeNumerosPerfeitos=0;
	
	//pegando todos os números que o usuários digitou.
	for(int i=0; i<quantidadeNumeros; i++){
		printf("\nInforme o número %d de %d: ",i+1, quantidadeNumeros);
		scanf("%d", &vetorDeNumeros[i]);
		//verifica se o número que o usuário acabou de digitar é um número perfeito.
		if( isPerfeito(vetorDeNumeros[i])){
			quantidadeNumerosPerfeitos++;
		}
	}
	//criando um vetor que vai armazenar os números perfeitos.
	if( quantidadeNumerosPerfeitos<=0){
		printf("Nenhum dos números informados é perfeito!");
		return -1;	
	}
	
	//imprimindo todos os números e informando quais são perfeitos.
	for(int i=0; i<quantidadeNumeros; i++){
		if( isPerfeito(vetorDeNumeros[i])){
			printf("\n%d é perfeito", vetorDeNumeros[i]);
		}else{
			printf("\n%d", vetorDeNumeros[i]);
		}
	}
	printf("\nTotal de números perfeitos: %d", quantidadeNumerosPerfeitos);
}

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...