diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/projecteuler/187.c | 30 |
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; +} + |
