localizar números primos. [bash]

Iniciado por Dr Cray--, 5 Noviembre 2009, 00:42 AM

0 Miembros y 1 Visitante están viendo este tema.

Dr Cray--

Buenas a todos , sera posible la localizacion de un numero determinado de numeros primos mediante un pequeño script tipo bash para gnu linux o algo asi .?

es decir que el script me pueda averiguar los primeros 26 numeros primos .

solo por pura curiosidad.
gracias.

leogtz

Mmmm, se podría hacer algo así:

Código (bash) [Seleccionar]
#!/usr/bin/bash
# Script que comprueba los n primeros números.
# Cicla hasta que el usuario introduzca algo:
read -p "Numero de primos : " numero
until [ $numero ]
do
read -p "Numero : " numero
done
let _contador="1"; # Lleva la cuenta de los numeros primos encontrados.
let contador="1";
while [ $_contador -le $numero ]
do
# Proceso primo :
let divisores="0";
for i in $(seq 1 $contador);
do

if [ `expr $contador % $i` -eq 0 ]
then
let divisores+="1";
fi
done
if [ $divisores -eq 2 ]
then
echo -e "$_contador : $contador";
let _contador+="1";
fi
let contador+="1";
done


Salida:

leo@lein:~/Escritorio$ bash shell.sh
Numero de primos : 10
1 : 2
2 : 3
3 : 5
4 : 7
5 : 11
6 : 13
7 : 17
8 : 19
9 : 23
10 : 29
leo@lein:~/Escritorio$ bash shell.sh
Numero de primos : 5
1 : 2
2 : 3
3 : 5
4 : 7
5 : 11
leo@lein:~/Escritorio$ bash shell.sh
Numero de primos : 13
1 : 2
2 : 3
3 : 5
4 : 7
5 : 11
6 : 13
7 : 17
8 : 19
9 : 23
10 : 29
11 : 31
12 : 37
13 : 41
leo@lein:~/Escritorio$
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Dr Cray--

caramba, me ha funcionado como anillo al dedo.
me ha servido bastante .

gracias LEO   se agradece :D

Selecta503

quien me proporciona un codigo  script en bash que empiece con cualquier número entero positivo. Si el
número es par divídalo entre 2; y si es impar multiplique por 3 y aumente en uno (+1).
Obténgase enteros positivos repitiendo el proceso hasta llegar a 1.  Es decir por   Ejemplo si empezamos en 5 la serie sería: 5, 16, 8, 4, 2, 1.

de ante mano se les agradece