Hola Perleros amigos!!
En esta oportunidad he logrado un programita sencillo que calcula los "n" primeros numeros primos, tiene una vuelta de tuerca mas, ya que hace uso de la logica del programa es_primo.pl, para este caso converti parte de ese codigo en una funcion.
Espero les agrade, les sea de utilidad y como siempre digo "todo es mejorable" asi que a mejorarlo!!
#!/usr/bin/perl
# este programa lee un numero N
# y muestra los N primeros numeros Primos
print"**********************\n";
print"* *\n";
print"* Listado de primos *\n";
print"* *\n";
print"**********************\n";
print"Cuantos numeros primos quiere encontrar :";
chop($num=<STDIN>);
print "\n";
$t=1;
$tg=1;
$bandera=0;
while ($tg<=$num){ # este while controla que se haya llegado a total de primos
$bandera=&esprimo($t); # llama a la funcion que controla que sea primo
if ($bandera) {
print "$tg )- es :\t $t \n"; # si es primo, lo muestra,
$tg++; # lo suma
$bandera=0; # vuelve la bandera a falso para controlar al proximo numero
}
$t++;
}
sub esprimo {
local ($t2)= @_;
$con=0;for($i=1;$i<=$t2;$i++){
$res=$t%$i; # calcula el resto de la division del numero con el indice
if($res==0){$con++;}
if ($con>2){last;} # si tiene mas de dos divisores y aun no llego al final, sale de la repeticion.
}
if ($con<=2){$ban=1;}
else{$ban=0;}
return $ban;
}
No hay comentarios:
Publicar un comentario