/*
 Programa para buscar numeros primos en un rango dado
 unsigned long long 64 0 to 18,446,744,073,709,551,615
 
 Geronimo Orozco 
 http://glo.org.mx/~patux/crypto/
 
 Uso: ./{$program} <num_inicio> <num_fin>
 
*/
#include <stdlib.h>
#define TRUE 1
#define FALSE 0

unsigned long long isprime(unsigned long long a)
{
unsigned long long i; // iterador
    if ((a==2) || (a==3))
   return TRUE;
    else if ((a%2)==0)
    {
   return FALSE;
    }
    else
    {
      for (i=2;i<a;++i)
   {
       if (a%i==0)
      return FALSE;
       if (i==a/2)
      return TRUE;
   }
    }
}
int main(int argc, char *argv[])
{
int count;
unsigned long long num,contador=0,res,limite,inicio;
    if (argc > 2)
    {
   inicio=atoll(argv[1]);
   limite=atoll(argv[2]);
   printf ("Numeros primos desde %s hasta %s\n\n",argv[1],argv[2]);
   for (num=inicio;num<limite; num++)
   {
       res=isprime(num);
       if (res==TRUE)
       {
      printf (" %llu",num);
      contador++;
       }
   }
   printf ("\nTotal primos:%llu \n\n",contador);
   return 0;
    }
    else {
       printf ("Modo de usarse:\n\n ");
       printf ("%s <start_number> <end_number>\n\n" ,argv[0]);
       return 1;
    }
}