Cálculo de número perfeito range
Publicado por Sérgio Abrantes Junior (última atualização em 23/05/2020)
[ Hits: 1.368 ]
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"
Trocar senha no primeiro login em PDC SAMBA
Baixa, instala, configura e executa o NO-IP.
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Máquina perereca - até onde é possível o uso de Linux?
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
Colocando skins no VLC Media Player
Como anda a saúde do disco rígido?
Problema na instalação do Xubuntu (3)
Debian 13 "trixie&... lançado! (28)