Cálculo de número perfeito range
Publicado por Sérgio Abrantes Junior (última atualização em 23/05/2020)
[ Hits: 1.237 ]
Homepage: https://br.linkedin.com/in/sergioabrantes
numeroPerfeitoRange
Shell script que mostra os números perfeitos encontrados num range de números informados na execução. Ao final mostra o total de números perfeitos encontrados.
Otimizações de código:
Analisa até o divisor ser no máximo sua metade:
Ex.: Número informado = 10
Ele checará até o 5 no máximo.
#!/usr/bin/env bash # shellcheck disable=SC2162 # Prove: NumeroPerfeitoRange # Descricao Curta: Verifica se número informado é perfeito # Descrição Longa: Verifica se número informado é perfeito # Frequencia: Sob demanda # Autor: Sérgio Abrantes # Contato: sergioabrantes@gmail.com # Site: https://github.com/sergioabrantesjunior/numeroPerfeitoRange # # # Histórico: # # v1.0.0 2020-01-17, Sérgio Abrantes: # - Versão inicial do script : ' Em Matemática, um número perfeito é um número inteiro para o qual a soma de todos os seus divisores positivos próprios (excluindo ele mesmo) é igual ao próprio número. Por exemplo, o número 6 é um número perfeito, pois: 6 = 1 + 2 + 3 O próximo número perfeito é o 28, pois: 28 = 1+ 2+ 4+ 7+ 14 Os quatro primeiros números perfeitos (6, 28, 496 e 8.128) eram os únicos conhecidos pelos gregos antigos desde pelo menos Euclides. No século XV acrescentou-se 33.550.336 à lista. O conjunto dos números perfeitos é: {6, 28, 496, 8128, 33550336, 8589869056, …} ' #set -x clear read -p "Digite um número: " range contaPerfeito=0 for ((numeroAnalisado=1;numeroAnalisado<=range;numeroAnalisado++));do contadorLoop=1 somaDivisoresInteiros=0 while [[ "$contadorLoop" -le "$((numeroAnalisado / 2))" ]];do if [ "$(( numeroAnalisado % contadorLoop ))" = 0 ];then somaDivisoresInteiros=$((somaDivisoresInteiros + contadorLoop)) fi contadorLoop=$((contadorLoop + 1)) done if [ "$somaDivisoresInteiros" -eq "$numeroAnalisado" ];then echo "O Número $numeroAnalisado é perfeito" contaPerfeito=$(( contaPerfeito + 1 )) fi done echo "Encontrado $contaPerfeito números perfeitos de 1 até $range"
Grave arquivos em pendrive sem sistema de arquivos
Shell Script para compilar o suporte À Logitech Quickcam Express no Slackware / Vector / Slax Linux
mant - abra manpages em seu terminal
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Jogando com Proton no LInux (0)
Ingress NGINX Controller CVSS base score of 9.8 (4)
Impossível corrigir problemas, você manteve (hold) pacotes quebrados. (2)