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
/* 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.
/****************************************************************************** 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; }
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.
(* 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.
''' 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.
/* 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."); } } }
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!
Está gostando do conteúdo?
Considere pagar um cafezinho para nossa equipe!