Subj : Faster algorithm for prim numbers..!! To : comp.programming From : Robert Bralic Date : Wed Sep 21 2005 10:15 am I weated a simple program, he is compiled with gcc, and generates prim numbers, with fastes method that I find.He is based on divide with generated prim numbers... At end he gives time report on format: dd:hh:mi:sec... Precompile as gcc prim.c -o prim, and use him as "prim upper_bound",as example: "prim 1000".If anybody have some idea how to make algorithm fastes write to me...!! //---------------------------------------------------------- #include #include #include void transform(char*, int); struct lst{ long int value; struct lst* next; }; int main(int argc, char* argv[]){ long int i,j,k, time_begin, time_end, razlika_vremena; char trans_value[20]; struct lst *prvi, *tekuci_prvi, *tekuci_drugi, *zadnji; prvi=(struct lst*)malloc(sizeof(struct lst)); prvi->next=(struct lst*)malloc(sizeof(struct lst)); prvi->value=1; prvi->next->value=2; tekuci_prvi=prvi->next; zadnji=prvi->next; zadnji->next=(struct lst*)NULL; k=atoi(argv[1]); tekuci_drugi=prvi; time(&time_begin); for(i=1;inext){ if((i%(tekuci_drugi->value)==0) && tekuci_drugi->value!=1){ if(i==1){ goto exit; } i++; goto exit; } tekuci_drugi=tekuci_drugi->next; } tekuci_prvi->next=(struct lst*)malloc(sizeof(struct lst)); tekuci_prvi=tekuci_prvi->next; tekuci_prvi->value=i; tekuci_prvi->next=(struct lst*)NULL; /*printf("%ld\n",i);*/ } tekuci_prvi=prvi; while(tekuci_prvi->next){ printf("%d\n", tekuci_prvi->value); tekuci_prvi=tekuci_prvi->next; } time(&time_end); razlika_vremena=time_end-time_begin; transform(&trans_value, razlika_vremena); printf("\nGeneriranje i stampanje do %d broja je trajalo:%s", k, trans_value); exit(0); } void transform(char* t, int time){ int days, hours, minuts, seconds, i, timi; char dd[5],hh[3],mi[3],sec[3]; timi=time; days=time/(24*3600); i=time%(24*3600); time=time/(24*3600)+i; hours=(time/3600); i=time%3600; time=time/3600+i; minuts=time/60; time=time/60; time=time%60; seconds=timi-days*3600*24-hours*3600-minuts*60; if(days<10){ sprintf(dd,"0%d",days); }else{ sprintf(dd,"%d",days); } if(hours<10){ sprintf(hh,"0%d",hours); }else{ sprintf(hh,"%d",hours); } if(minuts<10){ sprintf(mi,"0%d",minuts); }else{ sprintf(mi,"%d",minuts); } if(seconds<10){ sprintf(sec,"0%d",seconds); }else{ sprintf(sec,"%d",seconds); } sprintf(t,"%s:%s:%s:%s",dd, hh, mi, sec); } //------------------------------------------------- Thanks in advance, Robert ..!! robert.bralic@si.t-com.hr .