home *** CD-ROM | disk | FTP | other *** search
- /*
- Sieve of Eratosthenes benchmark from BYTE, Sep. '81, pg. 186.
- Compile by:
- A>cc1 sieve.c -e1000
- All variables have been made external to speed them up; other than
- that one change, the program is identical to the one used in the BYTE
- benchmark....while they got an execution time of 49.5 seconds and a
- size of 3932 bytes using v1.32 of the compiler,
- ********
- v1.45 clocks in at * 15.2 * seconds with a size of 3718 bytes!
- ********
- */
-
- #define TRUE 1
- #define FALSE 0
- #define SIZE 8190
- #define SIZEPL 8191
-
- char flags[SIZEPL];
- int i,prime,k,count,iter;
-
- main()
- {
- printf("Hit return to do 10 iterations: ");
- getchar();
-
- for (iter = 1; iter <= 10; iter++) {
- count = 0;
- for (i = 0; i <= SIZE; i++)
- flags[i] = TRUE;
- for (i = 0; i <= SIZE; i++) {
- if (flags[i]) {
- prime = i + i + 3;
- k = i + prime;
- while (k <= SIZE) {
- flags[k] = FALSE;
- k += prime;
- }
- count++;
- }
- }
- }
- printf("\7\n%d primes.\n",count);
- }