martes, 20 de diciembre de 2011

Listado de Numeros Primos

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