Exercício: verificar se um número é feliz

Fala galera, tudo beleza?
Hoje vamos ver como mostrar programas que verificam se um número é ou não um número feliz na matemática.
Caso você queria saber mais sobre a definição de número feliz segundo a matemática, recomendo a leitura do nosso post específico sobre o assunto:
Agora vamos as códigos!!!
Exemplo de resposta em C#
/******************************************************************************
Criado pelo professor Giovani Da Cruz
https:// giovanidacruz.com.br
*******************************************************************************/
using System;
using System.Collections.Generic;
class Program
{
// Função para calcular a soma dos quadrados dos dígitos de um número
static int CalcularSomaDosQuadrados(int n)
{
int soma = 0;
while (n > 0)
{
int digito = n % 10;
soma += digito * digito;
n /= 10;
}
return soma;
}
// Função para verificar se um número é feliz
static bool EhNumeroFeliz(int n)
{
HashSet<int> numerosVistos = new HashSet<int>();
while (n != 1 && !numerosVistos.Contains(n))
{
numerosVistos.Add(n);
n = CalcularSomaDosQuadrados(n);
}
return n == 1;
}
static void Main()
{
Console.Write("Digite um número: ");
int numero = int.Parse(Console.ReadLine());
if (EhNumeroFeliz(numero))
{
Console.WriteLine(numero + " é um número feliz!");
}
else
{
Console.WriteLine(numero + " não é um número feliz.");
}
}
}
- Usando declarações: No início do código, usamos algumas declarações “using” para importar namespaces que contêm classes e métodos que usaremos no programa.
SystemeSystem.Collections.Genericsão namespaces necessários. - Função
CalcularSomaDosQuadrados: Esta função recebe um númeroncomo entrada e calcula a soma dos quadrados dos dígitos desse número. Ela faz isso usando um loopwhilepara iterar pelos dígitos do número. O resultado da soma é retornado. - Função
EhNumeroFeliz: Esta função recebe um númeroncomo entrada e verifica se ele é um número feliz. A função utiliza um conjunto (HashSet) chamadonumerosVistospara rastrear os números que já foram vistos durante o processo. A função entra em um loopwhileque continua até quenseja igual a 1 (um número feliz) ou até quenseja um número que já foi visto anteriormente. No loop, ela adiciona o número atual ao conjuntonumerosVistose atualizanchamando a funçãoCalcularSomaDosQuadradospara obter o próximo número na sequência. A função retornatruese o número for feliz efalsese não for. - Função
Main: A funçãoMainé o ponto de entrada do programa. Ela começa solicitando ao usuário que insira um número através da funçãoConsole.ReadLine()e converte a entrada em um número inteiro usandoint.Parse(). Em seguida, ela chama a funçãoEhNumeroFelizpara determinar se o número é feliz ou não e imprime a mensagem apropriada com base no resultado.
Basicamente, o programa verifica se o número é feliz seguindo a definição matemática de números felizes, onde você itera pela soma dos quadrados dos dígitos até que chegue ao número 1 ou entre em um ciclo infinito. Se chegar a 1, é considerado um número feliz; caso contrário, não é. O programa utiliza um conjunto para evitar ciclos infinitos, pois se ele encontrar um número que já foi visto, saberá que está preso em um ciclo e interromperá a verificação.
Exemplo de resposta em C++
/*
Criado pelo Professor Giovani Da Cruz
https://giovanidacruz.com.br
*/
#include <iostream>
#include <set>
// Função para calcular a soma dos quadrados dos dígitos de um número
int calcularSomaDosQuadrados(int n) {
int soma = 0;
while (n > 0) {
int digito = n % 10;
soma += digito * digito;
n /= 10;
}
return soma;
}
// Função para verificar se um número é feliz
bool ehNumeroFeliz(int n) {
std::set<int> numerosVistos;
while (n != 1 && numerosVistos.find(n) == numerosVistos.end()) {
numerosVistos.insert(n);
n = calcularSomaDosQuadrados(n);
}
return n == 1;
}
int main() {
int numero;
std::cout << "Digite um número: ";
std::cin >> numero;
if (ehNumeroFeliz(numero)) {
std::cout << numero << " é um número feliz!" << std::endl;
} else {
std::cout << numero << " não é um número feliz." << std::endl;
}
return 0;
}
Neste programa, primeiro definimos uma função calcularSomaDosQuadrados que calcula a soma dos quadrados dos dígitos de um número. Em seguida, temos a função ehNumeroFeliz que verifica se um número é feliz ou não.
O programa principal lê um número da entrada padrão, chama a função ehNumeroFeliz para verificar se ele é feliz e exibe a mensagem apropriada.
Lembrando que um número feliz é aquele que, ao substituir cada dígito pela soma dos quadrados dos seus dígitos e repetir o processo, eventualmente resulta no número 1. Caso contrário, não é considerado um número feliz.
Exemplo de resposta em Python
'''
Criado pelo professor Giovani Da Cruz
https:// giovanidacruz.com.br
'''
# Função para calcular a soma dos quadrados dos dígitos de um número
def calcular_soma_dos_quadrados(n):
soma = 0
while n > 0:
digito = n % 10
soma += digito * digito
n //= 10
return soma
# Função para verificar se um número é feliz
def eh_numero_feliz(n):
numeros_vistos = set()
while n != 1 and n not in numeros_vistos:
numeros_vistos.add(n)
n = calcular_soma_dos_quadrados(n)
return n == 1
# Função principal
def main():
numero = int(input("Digite um número: "))
if eh_numero_feliz(numero):
print(f"{numero} é um número feliz!")
else:
print(f"{numero} não é um número feliz.")
if __name__ == "__main__":
main()
Explicação
calcular_soma_dos_quadrados(n)é uma função que recebe um númeroncomo entrada e calcula a soma dos quadrados dos dígitos desse número. Por exemplo, para o número 19, a função calcula 1^2 + 9^2 = 82.eh_numero_feliz(n)é uma função que verifica se um número é feliz. Ela utiliza um conjunto (set) chamadonumeros_vistospara rastrear os números que já foram vistos durante a verificação. O loop while é usado para continuar o processo até que o número seja 1 (um número feliz) ou até que um número já visto seja encontrado. Se o número final for 1, a função retornaTrue, indicando que o número é feliz; caso contrário, retornaFalse.- Na função
main(), primeiro pedimos ao usuário que insira um número usando a funçãoinput(), e o número é convertido para um inteiro. - Em seguida, chamamos a função
eh_numero_feliz(numero)para verificar se o número inserido pelo usuário é feliz ou não. - Com base no resultado retornado pela função
eh_numero_feliz(), exibimos a mensagem apropriada para o usuário usando a funçãoprint(). - A cláusula
if __name__ == "__main__":garante que o código dentro da funçãomain()seja executado somente se o arquivo Python for executado diretamente (não se for importado como módulo em outro programa).
No geral, o código em Python funciona da mesma forma que o código em C#. Ele verifica se um número é feliz seguindo a definição matemática de números felizes, e depois informa ao usuário se o número é ou não um número feliz.
Exemplo em Pascal / Delphi / Lazarus
Para este exemplo, deixamos um link para o post do mesmo exercício no site Show Delphi.
Beleza pessoal? Espero que tenham gostado.
Deixe nos comentários sugestões de outras linguagens para implementarmos este exercício.
Um abraço e até o próximo post. Valeu!