Ir ao conteúdo
  • Cadastre-se

C Número Perfeito em C


Eduardo_Braz

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;
    }

}
 

Link para o comentário
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;
}

 

Link para o comentário
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;
}

Link para o comentário
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
Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

#include <iostream>

using namespace std;

int main()
{
    int num, i, aux = 0;

    do{
        cout << "\n\nPara sair do programa digite -1.";

        cout << "\nDigite um numero inteiro: ";
        cin >> num;

        for(i = 1; i <= num; i++){ // nesta linha pode-se retirar o sinal de = e conseguentemente retirar o if(i!= num)
            if(num % i == 0){
                if(i != num){
                    aux += i;
                    cout << "\naux = " << aux;
                }
            }

        }
        if(num == aux){
            cout << "\nO numero " << num << " e Perfeito.\n\n";
        }else if(num != -1){
            if(num != aux)
                cout << "\nO numero " << num << " e imperfeito.\n\n";
        }
        aux = 0;
    }while(num != -1);
    return 0;
}

Link para o comentário
Compartilhar em outros sites

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...