Pular para o conteúdo

Shel Script para numeros primos em sequencia

Responder tópico
  • Denunciar
  • Indicar

1. Shel Script para numeros primos em sequencia

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

Responder tópico

2. Re: Shel Script para numeros primos em sequencia

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

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 }' 

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder