/****************************************************************************/
/* Lista de primos */
/* */
/* Jaime Suarez <[email protected]> 2003 */
/* en http://www.matematicas.net */
/****************************************************************************/
#include <stdio.h>
#include <stdlib.h>
typedef unsigned long ulong;
int es_primo(ulong n);
void uso(void);
main(int argc, char *argv[])
{
ulong i,inicio,final;
int cont=0;
if (argc<3) uso();
inicio=atol(argv[1]);
final=atol(argv[2]);
if (inicio>final) uso();
printf("Lista de primos del %lu al %lu.\n\n",inicio,final);
if (inicio<3) { printf("%5d ",2); inicio=3; cont=1;}
if (inicio%2==0) inicio++;
for (i=inicio; i<=final; i+=2) {
if (es_primo(i) ) {
printf("%5lu ",i);
if (++cont % 10 ==0) printf("\n");
}
}
return 0;
}
int es_primo(ulong numero)
{
ulong div;
for (div=3; (numero%div!=0 && div*div<=numero); div+=2) ;
if (div*div>numero) return 1;
else return 0;
}
void uso(void)
{
fprintf(stderr,"-------------------------------------\n");
fprintf(stderr," Uso: LISPRI n m\n");
fprintf(stderr," lista de los primos entre n y m\n");
fprintf(stderr,"-------------------------------------\n");
exit(1);
}