Cálculo de número primo
Publicado por Sérgio Abrantes Junior (última atualização em 19/02/2020)
[ Hits: 2.896 ]
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"
Configurando seus arquivos no Slackware
Script para fazer download do youtube
Localizando tentativas de invasão
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (6)
Instalação do cosmic no archlinux (0)
Formas seguras de instalar Debian Sid [RESOLVIDO] (14)









