home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
progmisc
/
euphor10.zip
/
SIEVE.C
< prev
next >
Wrap
C/C++ Source or Header
|
1993-05-07
|
1KB
|
52 lines
#define ITERATIONS 10000
#include <stdio.h>
#include <time.h>
#define SIZE 8190
#define ON 1
#define OFF 0
char flags[SIZE + 1];
SetBlock(var, size, val)
register char *var;
register int size;
register char val;
{
/*register*/ int i;
for (i = 0; i < size; i++)
var[i] = val;
}
main()
{
/*register*/ int count, i, k, prime;
int iter;
int t;
t = clock();
for (iter = 1; iter <= ITERATIONS; iter++) {
count = 0;
/* turn flags on (non-zero) */
SetBlock(flags, SIZE, ON);
for (i = 0; i <= SIZE; i++) {
if (flags[i]) {
prime = i + i + 3;
/* printf("%d ", prime); */
k = prime + i;
while(k <= SIZE) {
flags[k] = OFF;
k = k + prime;
}
count++;
}
}
}
printf("%d primes\n", count);
printf("%d iterations in %.2f seconds\n", ITERATIONS,
(clock() - t)/(double)CLOCKS_PER_SEC);
}