Ir ao conteúdo
  • Cadastre-se
Eduardo_Braz

C Número Perfeito em C

Posts recomendados

Dado um número n inteiro e positivo, dizemos que n é perfeito se n for igual à soma de seus divisores
positivos diferentes de n. Construa um programa que leia um número inteiro n, apresenta a soma dos
divisores de n e verifica se o número informado é perfeito ou não.
 

Entrada

 

O programa deve ler um número inteiro n.
 

Saída

 

O programa deve apresentar uma linha contendo o texto: "n = d1 + d2 + d3 + ... + dk = x (MENSAGEM)", onde n é o número lido, di são os divisores de n em ordem crescente, x é a soma dos divisores e
MENSAGEM é a mensagem "NUMERO PERFEITO"ou "NUMERO NAO E PERFEITO".

 

Observações

 

Suponha que o usuário sempre fornecerá um número maior que 1.

 

Exemplo

 

Entrada

 

6

 

Saída

 

6 = 1 + 2 + 3 = 6 (NUMERO PERFEITO)

 

Entrada

 

12

 

Saída

 

12 = 1 + 2 + 3 + 4 + 6 = 16 (NUMERO NAO E PERFEITO)

 

=====================================================================================================

 

#include <stdio.h>

int main(){
    int n, cont, soma, aux, i;

    scanf("%d", &n);
    aux = 0;

    for(i=1; i<n; i++){
        if (n%1==0)
        {
            aux += i;
        }
        else if (aux = n)
        {
            printf("NUMERO PERFEITO");
        }
        break;
    }

}
 

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>

int main(){
    int n, cont, soma, aux, i;

    scanf("%d", &n);
    aux = 0;

    for(i=1; i<n; i++)
    {
        if (n%i==0)
        {
            aux += i;
        }        
    }
    if (aux == n)
    {
      printf("NUMERO PERFEITO");
    }    
}
 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim mostra a saída mais ou menos formatada:

#include <stdio.h>

int main() {
    for (int entrada = 1; entrada < 1000; entrada++) {
        int soma = 0;

        printf("%i = ", entrada);

        for (int i = 1; i < entrada; ++i) {
            if (entrada % i == 0) {
                soma += i;
                printf("%i + ", i);
            }
        }

        printf(" = %i (%s) \n", soma, (entrada == soma ? "perfeito" : "imperfeito"));
    }

    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me ajuda na formatação, não estou conseguindo remover o + antes do igual

 

#include <stdio.h>

int main() {
    
    int n, j, i, soma, aux;
    
    scanf("%d", &n);
    
    aux =1;
    
    for(i = 1; i <= aux; i++) {
        soma = 0;
        printf("%d = ", n);

        for(j = 1; j < n; j++){
            if (n % j == 0){
                soma += j;
                printf("%d + ", j);
            }
        }
        if (n == soma){
            printf("= %d (NUMERO PERFEITO)\n", soma);
        }
        else{
            printf("= %d (NUMERO NAO E PERFEITO)\n", soma);
        }
    }

    return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void imprimir(char mensagem[], int vetor[], int tamanho, int entrada, int soma) {
    printf("%i = ", entrada);

    for (int i = 0; i < tamanho; ++i) {
        printf("%i", vetor[i]);
        if (i + 1 < tamanho) {
            printf(" + ");
        }
    }

    printf(" = %i (%s)", soma, mensagem);
}

int main() {
    int entrada = 0;
    int soma = 0;
    int insercao = 0;

    char mensagem[255] = "";

    printf("Digite um número: ");
    scanf(" %i", &entrada);

    int vetor[entrada];

    for (int i = 1; i < entrada; ++i) {
        if (entrada % i == 0) {
            vetor[insercao] = i;
            soma += i;
            insercao += 1;
        }
    }

    if (entrada == soma) {
        strcpy(mensagem, "perfeito");
    } else {
        strcpy(mensagem, "imperfeito");
    }

    imprimir(mensagem, vetor, insercao, entrada, soma);
    return 0;
}

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...