Cálculo de número primo
Publicado por Sérgio Abrantes Junior (última atualização em 19/02/2020)
[ Hits: 2.535 ]
Homepage: https://br.linkedin.com/in/sergioabrantes
numeroPrimoRange
Shell script que mostra os números primos encontrados num range de números informados na execução. Ao final mostra o total de números primos encontrados.
Otimizações de código:
Número 2 é o único número par. Se for número par diferente de 2, finaliza a análise.
Analisa até o divisor ser no máimo sua metade:
Ex: Número informado = 10
Ele checará até o 5 no máximo.
Encontrado um divisor em qualquer parte da análise, segue para o próximo número.
#!/usr/bin/env bash # shellcheck disable=SC2162 # Prove: NumeroPrimoRange # Descricao Curta: Encontra números primos num range # Descrição Longa: Encontra números primos num range informado. # Ao final mostra o total de números encontrados # Frequencia: Sob demanda # Autor: Sérgio Abrantes # Contato: sergioabrantes@gmail.com # Site: https://github.com/sergioabrantesjunior/numeroPrimoRange # # # Histórico: # # v1.0.0 2019-01-01, Sérgio Abrantes: # - Versão inicial do script : ' Conceito básico: o número primo é um número que é divisível somente por 1 e por ele mesmo. Caso possua mais divisores, não é número primo, mas sim número composto. Exemplos: 1) 2 tem apenas os divisores 1 e 2, portanto 2 é um número primo (único primo par). 2) 17 tem apenas os divisores 1 e 17, portanto 17 é um número primo. 3) 10 tem os divisores 1, 2, 5 e 10, portanto 10 não é um número primo. ' clear read -p "Será analisado número primo do 1 até: " range contaPrimos=0 for ((numeroAnalisado=1;numeroAnalisado<=range;numeroAnalisado++));do : ' Abaixo testamos as segiuntes condições: 1) Número é 2 2) Número é diferente de 1 (já que é sempre será primo) e ímpar Satisfazendo essas condições, continua a análise. ' if [ "$numeroAnalisado" = 2 ] || [[ "$numeroAnalisado" != 1 && "$(( numeroAnalisado % 2 ))" = 1 ]];then primo=1 : ' Como todo número divisível por 1 é primo e divisor 2 já foi testado acima, iniciamos os próximos testes a partir do divisor 3 até o ( $número / 2) mais da metade dele não será e se for ímpar, condição testada acima. ' contadorLoop=3 while [[ "$contadorLoop" -lt "$(( numeroAnalisado / 2 ))" && "$primo" = 1 ]];do if [ "$(( numeroAnalisado % contadorLoop ))" = 0 ];then primo=0 break fi contadorLoop=$(( contadorLoop + 1 )) done if [ "$primo" = 1 ];then echo "Encontrato o número primo: $numeroAnalisado" contaPrimos=$(( contaPrimos + 1 )) fi fi done echo "Encontrado $contaPrimos números primos de 1 até $range"
Integrar/Sincronizar Firefox/Thunderbird com o KDE
[wgetreload] Evitando conexão "staled" (parada) no wget
infonow - all system information
freeradius: radwho mostrando número de usuários
Nenhum comentário foi encontrado.
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
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
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Criar entrada no GRUB para uma ISO Linux (5)
Ruído no Microfone (ALC287 - AMD Ryzen 5 7535HS) no Debian 12.9 (15)