Shel Script para numeros primos em sequencia

1. Shel Script para numeros primos em sequencia

Gustavo Pereira da Silva
28guga28

(usa Linux From Scratch)

Enviado em 21/06/2018 - 03:47h

Estou tentando criar um shell script para descobrir numeros primos... em uma sequencia de 2 a 1000
mas ao faze-lo ele está me retornando que todos são primos:
#!/bin/sh
s=2
r=0
x=0
n=2

while [ $n -le 999 ] ; do
n=`expr $n + 1`
while [ $s -ne $n ] ; do
r=$(expr $n % $s)
if [ $r -ne 0 ]
then
s=$(($s +1))
else
echo $n "nao eh primo"
break
fi
done
if [ $s -eq $n ] ; then
echo $n "eh primo"
fi
done


  


2. Re: Shel Script para numeros primos em sequencia

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 21/06/2018 - 08:44h

Guga,

Para calcular os primos entre 2 e 1000, utilize o seguinte comando:
seq 2 1000 | factor | awk -F \: '$1 == $2{ print $1}' | column -x 

Abraço,
Diego M. Rodrigues


3. Re: Shel Script para numeros primos em sequencia

Sandro Marcell
SMarcell

(usa Slackware)

Enviado em 21/06/2018 - 23:09h

Shell script puro não é o mais adequado pra esse tipo de cálculo. O ideal é você utilizar linguagens de programação "de verdade", como Python, Perl, Ruby, etc por serem MUITO mais velozes e eficazes. Agora se você quer esse cálculo em shell mesmo, aqui vão duas opções:

1 - Shell script puro (lento!)
#!/bin/bash
min=2
max=1000

echo "Numeros primos entre $min e ${max}:"

for ((x = min; x <= max - 1; x++)); do
v=0
for ((y = 2; y <= x - 1; y++)); do
if ((x % y == 0)); then
v=1
break
fi
done
((v == 0)) && echo $x
done


2 - Encadeando comandos via pipe (rápido!)
factor {2..1000} | awk 'NF == 2 { print $2 }' 







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts