summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2010-09-22 21:32:38 +0200
committerReiner Herrmann <reiner@reiner-h.de>2014-08-31 20:32:41 +0200
commitab40629bd9914612aa869be23fa360a5dcd25929 (patch)
tree55af35f58881075ebef6d4f5f097e1887c423255
parent90d859bd8b79bc7d4cd7228956ae4b5c97b4f60a (diff)
projecteuler solution 187
-rw-r--r--src/projecteuler/187.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/projecteuler/187.c b/src/projecteuler/187.c
new file mode 100644
index 0000000..a2e552e
--- /dev/null
+++ b/src/projecteuler/187.c
@@ -0,0 +1,30 @@
+#include "common.h"
+#include <stdlib.h>
+#include <string.h>
+
+// TODO: works only on 64 bit systems
+
+const unsigned long limit = 100000000;
+
+int main(void)
+{
+ unsigned long* p = primes(limit/2); // sqrt(limit)
+ unsigned long pcount = p[0];
+ unsigned long rcount = 0;
+ unsigned long i1, i2;
+
+ for(i1=1; i1<=pcount; i1++)
+ for(i2=i1; i2<=pcount; i2++)
+ {
+ unsigned long result = p[i1] * p[i2];
+ if(result >= limit)
+ break;
+ rcount++;
+ }
+
+ printf("%li\n", rcount);
+
+ free(p);
+ return 0;
+}
+