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!
Gracias por tu programa. Estaba buscando algo así (sencillito y escrito en Perl) y me viene muy bien.
ResponderEliminarSaludos, Rosendo