/****************************************************************************/ /* Lista de primos */ /* */ /* Jaime Suarez <mcripto@bigfoot.com> 2003 */ /* en http://elparaiso.mat.uned.es */ /****************************************************************************/ #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); }