Author: Vincent Diepeveen
Date: 04:58:39 05/27/05
Go up one level in this thread
On May 26, 2005 at 13:15:04, Dann Corbit wrote: >On May 26, 2005 at 12:02:37, Vincent Diepeveen wrote: >[snip] >>Hello, i can calculate prime numbers up to 10 million digits at my pc nearly, >>though not within 5 minutes. > >Less than a second, I imagine. > >>A prime number of 1051 digits is really peanuts to calculate within seconds. >Do you mean to prove prime with APR-CL? Industry grade primes is what matters. Proving you only do if such a prime can win the $100k :)see http://www.eff.org/awards/coop.html > >>I'll have to refer to some other software mine there. > >All primes to 100 million takes about ten seconds on a single CPU machine. Your code is pretty slow. All primes till 200 million (K7 MP2600): e:\dms>prime 200000000 total = 11078937 primes 1.123 seconds Hah, that's while the other cpu is busy. >E:\tmp\ioccc>type p.c >#include<stdio.h> >#include<stdlib.h> >#include<string.h> >#include<time.h> >#define TEST(f,x)(*(f+(x)/16)&(1<<(((x)%16L)/2))) >#define SET(f,x)(*(f+(x)/16)|=1<<(((x)%16L)/2)) >void check(int count_converted,unsigned long value,void*feld){if( >count_converted!=1){(void)puts("The scanf() function had an error conve\ >rting input data.");free(feld);exit(EXIT_FAILURE);}if(value==0){(void) >puts("Value out of range. Assuming exit is desired.");free(feld);exit( >EXIT_SUCCESS);}}int main(int argc,char*argv[]){unsigned char*feld=NULL,* >zzz=NULL;unsigned long teste=1,max,mom,hits=1,count,alloc,s=0,e=1;time_t >begin;if(argc>1)max=(unsigned long)atof(argv[1])+10000;else max= >14010000L;zzz=feld=malloc((size_t)(alloc=(((max-=10000L)>>4)+1L)));if( >feld){memset(zzz,0,(size_t)alloc);printf("Searching prime numbers to : \ >%lu\n",max);begin=time(NULL);while((teste+=2)<max)if(!TEST(feld,teste)){ >if(++hits%100000L==0){printf(" %lu. prime numbers\n",hits);(void)fflush( >stdout);}for(mom=3L*teste;mom<max;mom+=teste<<1)SET(feld,mom);}printf("\ > %lu prime numbers found in %lu secs.\n\nShow prime numbers",hits,( >unsigned long)(time(NULL)-begin));while(s<e){int cnt;printf("\n\nStart \ >of Area : ");(void)fflush(stdout);cnt=scanf("%lu",&s);check(cnt,s,feld); >printf("End of Area : ");(void)fflush(stdout);cnt=scanf("%lu",&e);check( >cnt,s,feld);if(s<=2&&e>=2)printf("%lu\t",2L);count=s-2;if(s%2==0)count++ >;while((count+=2)<e)if(!TEST(feld,count)&&count!=1)printf("%lu\t",count) >;}free(feld);}else{(void)puts("Memory allocation failure.");exit( >EXIT_FAILURE);}return 0;} > >E:\tmp\ioccc>p 100000000 >Searching prime numbers to : 100000000 > 100000. prime numbers > 200000. prime numbers > 300000. prime numbers > 400000. prime numbers > 500000. prime numbers > 600000. prime numbers > 700000. prime numbers > 800000. prime numbers > 900000. prime numbers > 1000000. prime numbers > 1100000. prime numbers > 1200000. prime numbers > 1300000. prime numbers > 1400000. prime numbers > 1500000. prime numbers > 1600000. prime numbers > 1700000. prime numbers > 1800000. prime numbers > 1900000. prime numbers > 2000000. prime numbers > 2100000. prime numbers > 2200000. prime numbers > 2300000. prime numbers > 2400000. prime numbers > 2500000. prime numbers > 2600000. prime numbers > 2700000. prime numbers > 2800000. prime numbers > 2900000. prime numbers > 3000000. prime numbers > 3100000. prime numbers > 3200000. prime numbers > 3300000. prime numbers > 3400000. prime numbers > 3500000. prime numbers > 3600000. prime numbers > 3700000. prime numbers > 3800000. prime numbers > 3900000. prime numbers > 4000000. prime numbers > 4100000. prime numbers > 4200000. prime numbers > 4300000. prime numbers > 4400000. prime numbers > 4500000. prime numbers > 4600000. prime numbers > 4700000. prime numbers > 4800000. prime numbers > 4900000. prime numbers > 5000000. prime numbers > 5100000. prime numbers > 5200000. prime numbers > 5300000. prime numbers > 5400000. prime numbers > 5500000. prime numbers > 5600000. prime numbers > 5700000. prime numbers > 5761455 prime numbers found in 10 secs. > >Show prime numbers > >Start of Area : 1234567 >End of Area : 1234789 >1234577 1234603 1234613 1234627 1234657 1234687 1234703 1234721 1234747 1234757 >1234759 1234769 1234777 1234787 > >Start of Area : -1 >End of Area : -1
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.