Ir ao conteúdo

Posts recomendados

Postado
#include <stdio.h>
#include <locale.h>
/*Faça um programa que imprima na tela todos os números perfeitos entre 1 e 2000*/

int main(){
    setlocale (LC_ALL, "portuguese");
        int n, i, soma=0, perfeito;
        perfeito=n;
            for (i=1; i<2000; i++){
                if(n%i==0)
                    soma=soma+i;
        }
            if (soma==perfeito)
                printf("Estes são os números perfeitos: %d", soma);

return 0;
}

Preciso fazer um programa que imprima todos os números perfeitos de 1 até 2.000, estou começando a aprender agora a programar, o código acima foi o que tentei fazer mas não funciona, alguém poderia me ajudar?

Postado

Eu sugiro começar devagar. Faça o seguinte. Dado um número N, verifique se o mesmo é perfeito ou não.

Ou seja, faça um programa em que é lido um número (n) e como resultado imprime na tela "n é perfeito" / "n não é perfeito".

Veja se consegue.

  • Curtir 1
Postado

Número Perfeito

Um número (n > 1) natural é núm. perfeito somente se a soma de todos os seus divisores inteiros positivos, exceto ele mesmo, é igual ao próprio número.

 

Ex.: 28 = 1 + 2 + 4 + 7 + 14 

 

 

* Números perfeitos de 1 a 2000

Se consultou livros ou  a internet, notou que para intervalo do tópico existem só 3 número perfeitos

1ª, 2ª,  3ª  
6 , 28, 496, [8.128, ...].

 

 

15 horas atrás, biaasly disse:

#include <stdio.h>
#include <locale.h>
/*Faça um programa que imprima na tela todos os números perfeitos entre 1 e 2000*/

int main(){
    setlocale (LC_ALL, "portuguese");
        int n, i, soma=0, perfeito;
        perfeito=n;
            for (i=1; i<2000; i++){
                if(n%i==0)
                    soma=soma+i;
        }
            if (soma==perfeito)
                printf("Estes são os números perfeitos: %d", soma);

return 0;
}

 

 

Teste somente os números pares do intervalo porque não se conhecem os números perfeitos ímpares, ou seja, não preciso testar os valores ímpares.

#include <stdio.h>
#include <locale.h>
/* Faça um programa que imprima na tela todos os números perfeitos entre 1 e 2000 */
int eperfeito (int numero){
	// Escreva a solução aqui ...
}
int main (void){
	setlocale (LC_ALL, "portuguese");
  
	int i, perfeito = 0;
	for (i = 2; i <= 2000; i += 2){
		perfeito = eperfeito (i);
		if (perfeito == 1){
			printf("Este números é um número perfeito: %d \n", i);
	}	}
	return 0;
}

 

* A fórmula 2n−1(2n-1) resulta em um número perfeito. Entretanto, não é o caso do enunciado, pois a intenção é que se faça o teste linearmente.


 

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!