Crie um programa e um algoritmo que leia um número e mostre se ele é ou não um número perfeito.

o que é um número perfeito?

Fala galera da programação, tudo beleza?

Aliando a matemática com a programação, a ideia do post de hoje é criar um programa para descobrir se um número informado é ou não um número perfeito. Mas e você sabe o que é um número perfeito?

 

Explicação sobre o número perfeito

Um número perfeito é um número inteiro positivo que é igual à soma de seus divisores próprios positivos (excluindo o próprio número). Em outras palavras, um número perfeito é aquele cuja soma dos seus divisores, excluindo o próprio número, é igual a ele mesmo.

Por exemplo, o número 6 é considerado um número perfeito, pois seus divisores próprios positivos (1, 2 e 3) somam-se a 6. Outros exemplos de números perfeitos são 28, 496 e 8128.

Os números perfeitos têm sido estudados desde a antiguidade e são objeto de interesse na teoria dos números. No entanto, até o momento, não se sabe se existem infinitos números perfeitos. Os números perfeitos conhecidos são todos números compostos e podem ser expressos em uma forma específica relacionada aos números primos chamada de “fórmula de Euclides-Euler”.

Bacana hein? Agora vamos ao exercício na programação!

Exercício:

Crie um programa e um algoritmo que leia um número e mostre se ele é ou não um número perfeito

 

Exemplo em C#

/*
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br

*/
using System;

class Program
{
    // Função para verificar se um número é perfeito
    static bool IsPerfectNumber(int number)
    {
        int sum = 0;

        // Encontra todos os divisores próprios do número e os soma
        for (int i = 1; i < number; i++)
        {
            if (number % i == 0)
            {
                sum += i;
            }
        }

        // Verifica se a soma dos divisores é igual ao número original
        if (sum == number)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    static void Main(string[] args)
    {
        Console.Write("Digite um número: ");
        int number = int.Parse(Console.ReadLine());

        // Chama a função IsPerfectNumber e exibe o resultado
        if (IsPerfectNumber(number))
        {
            Console.WriteLine($"{number} é um número perfeito.");
        }
        else
        {
            Console.WriteLine($"{number} não é um número perfeito.");
        }
    }
}

Explicação

Neste programa em C#, a função IsPerfectNumber verifica se um número é perfeito. A função itera de 1 até o número (exclusivo) e soma todos os divisores próprios.

No método Main, o usuário é solicitado a digitar um número, que é armazenado na variável number. Em seguida, a função IsPerfectNumber é chamada com o número fornecido como argumento. O resultado é exibido no console, informando se o número é ou não um número perfeito.

 

Exemplo em C++

/******************************************************************************

Criado pelo Professor Giovani DA Cruz
https://giovanidacruz.com.br

*******************************************************************************/
#include <iostream>
using namespace std;

// Função para verificar se um número é perfeito
bool isPerfectNumber(int number) {
    int sum = 0;
    
    // Encontra todos os divisores próprios do número e os soma
    for (int i = 1; i < number; i++) {
        if (number % i == 0) {
            sum += i;
        }
    }
    
    // Verifica se a soma dos divisores é igual ao número original
    if (sum == number) {
        return true;
    } else {
        return false;
    }
}

int main() {
    int number;
    
    cout << "Digite um número: ";
    cin >> number;
    
    // Chama a função isPerfectNumber e exibe o resultado
    if (isPerfectNumber(number)) {
        cout << number << " é um número perfeito." << endl;
    } else {
        cout << number << " não é um número perfeito." << endl;
    }
    
    return 0;
}

Explicação

Neste programa, a função isPerfectNumber recebe um número como argumento e verifica se ele é um número perfeito. A função itera de 1 até o número (exclusivo) e verifica se cada número é um divisor próprio do número original. Se for, o número é somado à variável sum.

Após o término do loop, é feita uma comparação entre a soma dos divisores e o número original. Se forem iguais, o número é considerado perfeito e a função retorna true. Caso contrário, retorna false.

No programa principal, o usuário é solicitado a digitar um número. Em seguida, a função isPerfectNumber é chamada com o número fornecido como argumento. O resultado é exibido na tela, informando se o número é ou não um número perfeito.

 

Exemplo em Pascal

(*
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br

*)
program NumeroPerfeito;

// Função para verificar se um número é perfeito
function IsPerfectNumber(number: Integer): Boolean;
var
  sum, i: Integer;
begin
  sum := 0;

  // Encontra todos os divisores próprios do número e os soma
  for i := 1 to number - 1 do
  begin
    if number mod i = 0 then
    begin
      sum := sum + i;
    end;
  end;

  // Verifica se a soma dos divisores é igual ao número original
  if sum = number then
  begin
    IsPerfectNumber := True;
  end
  else
  begin
    IsPerfectNumber := False;
  end;
end;

var
  number: Integer;

begin
  Write('Digite um número: ');
  Readln(number);

  // Chama a função IsPerfectNumber e exibe o resultado
  if IsPerfectNumber(number) then
  begin
    Writeln(number, ' é um número perfeito.');
  end
  else
  begin
    Writeln(number, ' não é um número perfeito.');
  end;
end.

Explicação

Neste programa em Pascal, a função IsPerfectNumber verifica se um número é perfeito, seguindo a mesma lógica do exemplo anterior. A função itera de 1 até o número (exclusivo) e soma todos os divisores próprios.

No programa principal, o usuário é solicitado a digitar um número, que é armazenado na variável number. Em seguida, a função IsPerfectNumber é chamada com o número fornecido como argumento. O resultado é exibido no console, informando se o número é ou não um número perfeito.

 

Exemplo em Python

'''
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br

'''
def is_perfect_number(number):
    # Variável para armazenar a soma dos divisores
    sum = 0

    # Encontra todos os divisores próprios do número e os soma
    for i in range(1, number):
        if number % i == 0:
            sum += i

    # Verifica se a soma dos divisores é igual ao número original
    if sum == number:
        return True
    else:
        return False

number = int(input("Digite um número: "))

# Chama a função is_perfect_number e exibe o resultado
if is_perfect_number(number):
    print(number, "é um número perfeito.")
else:
    print(number, "não é um número perfeito.")

Explicação

Neste programa em Python, a função is_perfect_number verifica se um número é perfeito, seguindo a mesma lógica do exemplo anterior. A função itera de 1 até o número (exclusivo) e soma todos os divisores próprios.

No programa principal, o usuário é solicitado a digitar um número, que é convertido para inteiro e armazenado na variável number. Em seguida, a função is_perfect_number é chamada com o número fornecido como argumento. O resultado é exibido no console, informando se o número é ou não um número perfeito.

 

Exemplo em Java (PerfectNumber.java)

/*
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br

*/
import java.util.Scanner;

public class PerfectNumber {
    public static boolean isPerfectNumber(int number) {
        // Variável para armazenar a soma dos divisores
        int sum = 0;

        // Encontra todos os divisores próprios do número e os soma
        for (int i = 1; i < number; i++) {
            if (number % i == 0) {
                sum += i;
            }
        }

        // Verifica se a soma dos divisores é igual ao número original
        if (sum == number) {
            return true;
        } else {
            return false;
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Digite um número: ");
        int number = scanner.nextInt();

        // Chama o método isPerfectNumber e exibe o resultado
        if (isPerfectNumber(number)) {
            System.out.println(number + " é um número perfeito.");
        } else {
            System.out.println(number + " não é um número perfeito.");
        }
    }
}

Explicação

Neste programa em Java, a função isPerfectNumber verifica se um número é perfeito, seguindo a mesma lógica dos exemplos anteriores. A função itera de 1 até o número (exclusivo) e soma todos os divisores próprios.

No método main, um objeto Scanner é criado para ler a entrada do usuário. Em seguida, o usuário é solicitado a digitar um número, que é armazenado na variável number. O método isPerfectNumber é chamado com o número fornecido como argumento. O resultado é exibido no console, informando se o número é ou não um número perfeito.

 

 

Beleza pessoal? Espero que tenham gostado do exercício.

 

Dúvidas ou sugestões de outras linguagens? Deixe o seu comentário!

 

Um abraço e até o próximo post. Valeu!

  • Publicado por Giovani Da Cruz
  • 214 views
  • 0 comentarios
  • 6 de julho de 2023

 

Está gostando do conteúdo?
Considere pagar um cafezinho para nossa equipe!

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados a Categoria Algoritmos com Laços

Continue aprendendo

Aumente o seu conhecimento
Crie um algoritmo e um programa que leia 5 números e escreva o maior e o menor desses 5 números, nessa ordem.
29 de abril de 2024
Crie um algoritmo e um programa que leia 5 números e informe o maior número
10 de abril de 2024
Crie um algoritmo e um programa que solicite ao usuário digitar seis números inteiros. O programa deverá somar os valores pares informados e mostrar o resultado desta soma na tela.
18 de fevereiro de 2024
Crie um algoritmo e um programa em que solicite ao usuário digitar sete números inteiros. O programa deverá contar e mostrar na tela a quantidade de valores ímpares informados.
15 de fevereiro de 2024
Crie um algoritmo e um programa que leia 5 números e mostre o maior e o menor.
5 de fevereiro de 2024
Crie um programa e um algoritmo para listar os 1000 primeiros números primos.
23 de janeiro de 2024
Crie um programa e um algoritmo para listar os 4 primeiros números perfeitos.
19 de janeiro de 2024
Crie um programa e um algoritmo para listar os 1000 primeiros números felizes.
4 de dezembro de 2023
Crie um algoritmo e um programa para descobrir os 100 primeiros naturais que possuam raízes quadradas inteiras
28 de novembro de 2023
Exercício de algoritmo: Sequência de Fibonacci
24 de novembro de 2023