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;
}
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
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.
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!
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 97entonces 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:
- #!/usr/bin/perl
- # este programa lee un numero N
- # y avisa si es un numero primo
- print"*******************************\n";
- print"* AVISO DE PRIMO *\n";
- print"* ----- -- ------ *\n";
- print"*******************************\n";
- print"ingrese el numero :";
- chop($num=<STDIN>);
- print "\n";
- $con=0; # contador de divisores
- 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
- }
- if ($con>2){
- last; # si tiene mas de dos divisores y aun no llego al final, sale de la repeticion.
- }
- }
- if ($con<=2){
- print "el numero $num ES primo \n";
- }
- else{
- print "el numero $num NO es primo! \n";
- }
- print "listo! \n";
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.
Suscribirse a:
Entradas (Atom)
