Mostrando entradas con la etiqueta Codigo Fuente. Mostrar todas las entradas
Mostrando entradas con la etiqueta Codigo Fuente. Mostrar todas las entradas

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

lunes, 19 de diciembre de 2011

Encuentra divisores


Buenas noches, para poder ayudar a terminar los deberes a un niño , puse a programar esto que enlista los divisores (enteros )de un numero N. (que no sea muy grande, por la salud de su microprocesador)


#!/usr/bin/perl
# este programa lee un numero N
# y calcula todos sus divisores
# autor: Juan Manuel Ovejero
print"*************\n";
print"* DIVISORES *\n";
print"*************\n";
print"ingrese el numero :";
chop($num=<STDIN>);
print "\n";
for($i=1;$i<=$num;$i++){
$res=$num%$i; # calcula el resto de la division del numero con el indice 
if($res==0){
$con++; # si el resto, es decir si el indice es divisor del numero, suma uno a al cantidad de divisores
print "$i \n";
}


print "listo! \n";

sábado, 17 de diciembre de 2011

Algoritmo numero primo

Hola a todos!!

Esta mañana me desperté con una inquietud programeral.  Y es otro procedimiento sencillo : ¿cuando un numero es primo?

segun la wikipedia.

Un número primo es un número natural mayor que 1 que tiene únicamente dos divisores distintos: él mismo y el 1. Se contraponen así a los números compuestos, que son aquellos que tienen algún divisor natural aparte de sí mismos y del 1. El número 1, por convenio, no se considera ni primo ni compuesto. Los números primos menores que cien son los siguientes: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 y 97
entonces me puse a pensar (poco a decir verdad) como responder a la pregunta ¿es el 3.651.497 un numero primo? con esto en mente y conociendo la deficion me puse a programar un poco en PERL y encontré esta solución:

  1. #!/usr/bin/perl
  2. # este programa lee un numero N
  3. # y avisa si es un numero primo
  4. print"*******************************\n";
  5. print"* AVISO DE PRIMO              *\n";
  6. print"* ----- -- ------             *\n";
  7. print"*******************************\n";
  8. print"ingrese el numero :";
  9. chop($num=<STDIN>);
  10. print "\n";
  11. $con=0; # contador de divisores
  12. for($i=1;$i<=$num;$i++){
  13. $res=$num%$i; # calcula el resto de la division del numero con el indice 
  14. if($res==0){
  15. $con++; # si el resto, es decir si el indice es divisor del numero, suma uno a al cantidad de divisores
  16. }
  17. if ($con>2){ 
  18. last; # si tiene mas de dos divisores y aun no llego al final, sale de la repeticion.
  19. }
  20. if ($con<=2){
  21. print "el numero $num ES primo \n";
  22. }
  23. else{
  24. print "el numero $num NO es primo! \n";
  25. }
  26. print "listo! \n";
corriendolo me queda asi

con lo que resulta que 3.651.497 es un numero primo!

espero que este algoritmo le sirva a algún estudiante , colega, etc. obviamente se puede mejorar, pero ya se me hace tarde para almozar! lo hare otro dia.

Hasta la proxima lectores!

saludos!

viernes, 16 de diciembre de 2011

Sumar impares

Hola! por esas cosas de la vida, tuve que volver a mi viejo amor, a programar, fabricar herramientas informaticas a partir que otras, que sirvan para solucionar problemas en el tratamiento y presentacion de datos.!! 

Una grata sorpresa es saber que existe un lenguaje de programacion como PERL. 

Este es mi primer código fuente. Es una programa para la consola de linux que suma los N primeros números impares. Es simple como procedimiento, lo encuadro en un nivel de dificultad "ni media neurona". 

Helo aqui

#!/usr/bin/perl
# este programa calcula la suma de los N (es el limite) primeros numeros 
# utiliza un bucle for. 
print"*************************************\n";
print"* SUMA DE IMPARES 0.1               *\n";
print"* ---- -- ------- ---               *\n";
print"*************************************\n";
print"cuantos impares desea sumar :";
chop($limite=<STDIN>);
print "\n";
# iniciar las variables que voy a usar en los calculos
# $suma llevara los totales de las sumas sucesivas
$suma=1;
for ($i=1;$i<$limite;$i++){
$suma=$suma+(($i*2)+1);
}
print "la suma de los $limite es : $suma \n";

Seguramente en un proximo encuentro subire mas.