diff --git a/examples/eratosthenes.c b/examples/eratosthenes.c
index c9533ea4c40ede0ed6101bf7b11c8b293ef2e611..d8e414dd3b85f2a39b9e089c5396c772555c20a0 100644
--- a/examples/eratosthenes.c
+++ b/examples/eratosthenes.c
@@ -176,6 +176,10 @@ vector_find_next (const unsigned long *vector, unsigned long bit, unsigned long
   return i * BITS_PER_LONG + find_first_one(word);
 }
 
+/* For benchmarking, define to do nothing (otherwise, most of the time
+   will be spent converting the output to decimal). */
+#define OUTPUT(n) printf("%lu\n", (n))
+
 int
 main (int argc, char **argv)
 {
@@ -242,7 +246,7 @@ main (int argc, char **argv)
       return EXIT_FAILURE;
     }
 
-  printf("2\n");
+  OUTPUT(2UL);
 
   bit = 0;
 
@@ -255,7 +259,7 @@ main (int argc, char **argv)
     {
       unsigned long n = 3 + 2 * bit;
 
-      printf("%lu\n", n);
+      OUTPUT(n);
 
       /* First bit to clear corresponds to n^2, which is bit
 
@@ -270,7 +274,7 @@ main (int argc, char **argv)
   for (; bit < block_size ;
        bit = vector_find_next (vector, bit + 1, size))
 
-    printf("%lu\n", 3 + 2 * bit);
+    OUTPUT(3 + 2 * bit);
 
   for (block = block_size; block < size; block += block_size)
     {
@@ -302,7 +306,7 @@ main (int argc, char **argv)
       for (bit = vector_find_next (vector, block, block + block_size);
 	   bit < block + block_size;
 	   bit = vector_find_next (vector, bit + 1, block + block_size))
-	printf("%lu\n", 3 + 2 * bit);
+	OUTPUT(3 + 2 * bit);
     }
 
   return EXIT_SUCCESS;