Generando números primos
2005-09-18 23:28:00
Para un experimento, necesitaba una lista bastante larga de números primos, lo que me indujo a hacer este programita en perl.
El script es realmente simple, y practicamente no usé ningún truco para acelerar la generación de primos salvo el empezar con una lista de ocho o nueve precalculados.
Los números generados son guardados en un txt que es reaprovechado la siguiente vez que se ejecuta el programa, que por cierto acepta como parametro cuantos primos queremos calcular.
Y sin más preambulos, el código:
#!/usr/bin/perl if (-e "primos.txt") { open (f1,"primos.txt"); @leido=<f1>; close(f1); foreach $l ( @leido ) { if ($l > 0) { push (@primos, $l*1); } } } else { @primos = (2,3,5,7,11,13,17,19); } $a = pop (@primos); push (@primos, $a); if ( $ARGV[0]==0 ) { $tope=1; } else { $tope=$ARGV[0]; } $cuenta=0; do { $primo = "Si"; foreach $p (@primos) { if ( $a % $p == 0 ) { $primo = "No"; break; } } if ( $primo eq "Si" ) { $cuenta++; print "[ $a ] $cuenta\n"; push (@primos, $a); } $a=$a+1; } while ($cuenta<$tope); open (f1,">primos.txt"); foreach $i ( @primos ) { print f1 "$i\n"; } close(f1);