/*
- * Calculate all primes up to a specific number.
- */
+** Calculate all primes up to a specific number.
+*/
/* Workaround missing clock stuff */
-#if defined(__APPLE2__) || defined(__APPLE2ENH__)
-# define clock() 0
-# define CLOCKS_PER_SEC 1
+#ifdef __APPLE2__
+# define clock() 0
+# define CLOCKS_PER_SEC 1
#endif
/*****************************************************************************/
-/* Data */
+/* Data */
/*****************************************************************************/
-#define COUNT 16384 /* Up to what number? */
-#define SQRT_COUNT 128 /* Sqrt of COUNT */
+#define COUNT 16384 /* Up to what number? */
+#define SQRT_COUNT 128 /* Sqrt of COUNT */
static unsigned char Sieve[COUNT];
/*****************************************************************************/
-/* Code */
+/* Code */
/*****************************************************************************/
/* This is an example where register variables make sense */
register unsigned char* S;
- register unsigned I;
- register unsigned J;
+ register unsigned I;
+ register unsigned J;
/* Output a header */
printf ("Sieve benchmark - calculating primes\n");
/* Execute the sieve */
I = 2;
while (I < SQRT_COUNT) {
- if (Sieve[I] == 0) {
- /* Prime number - mark multiples */
+ if (Sieve[I] == 0) {
+ /* Prime number - mark multiples */
J = I*2;
- S = &Sieve[J];
- while (J < COUNT) {
- *S = 1;
- S += I;
- J += I;
- }
- }
- ++I;
+ S = &Sieve[J];
+ while (J < COUNT) {
+ *S = 1;
+ S += I;
+ J += I;
+ }
+ }
+ ++I;
}
/* Calculate the time used */
/* Wait for a key and print the list if not 'Q' */
if (ReadUpperKey () != 'Q') {
- /* Print the result */
+ /* Print the result */
J = 0;
- for (I = 2; I < COUNT; ++I) {
- if (Sieve[I] == 0) {
- printf ("%4d\n", I);
+ for (I = 2; I < COUNT; ++I) {
+ if (Sieve[I] == 0) {
+ printf ("%4d\n", I);
if (++J == 23) {
printf ("Q to quit, any other key continues\n");
if (ReadUpperKey () == 'Q') {
}
J = 0;
}
- }
- if (kbhit() && ReadUpperKey == 'Q') {
- break;
- }
- }
+ }
+ if (kbhit() && ReadUpperKey () == 'Q') {
+ break;
+ }
+ }
}
return EXIT_SUCCESS;