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!

1 comentario:

  1. Gracias por tu programa. Estaba buscando algo así (sencillito y escrito en Perl) y me viene muy bien.

    Saludos, Rosendo

    ResponderEliminar