From 17c199d9c5d55f21c8cee51a59f3c9e3da0ef40e Mon Sep 17 00:00:00 2001 From: Reiner Herrmann Date: Wed, 22 Sep 2010 23:26:28 +0200 Subject: fixed 32 bit issues --- src/projecteuler/087.c | 8 +++----- src/projecteuler/187.c | 4 +--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/projecteuler/087.c b/src/projecteuler/087.c index ef12d9f..e1b1ad8 100644 --- a/src/projecteuler/087.c +++ b/src/projecteuler/087.c @@ -2,8 +2,6 @@ #include #include -// TODO: currently only works on 64 bit systems - const unsigned long limit = 50000000; int main(void) @@ -21,11 +19,11 @@ int main(void) unsigned long p4 = p[i4]; unsigned long p3 = p[i3]; unsigned long p2 = p[i2]; - unsigned long long result = p4*p4*p4*p4; + unsigned long long result = (unsigned long long)p4*p4*p4*p4; if(result >= limit) break; - result += p3*p3*p3; + result += (unsigned long long)p3*p3*p3; if(result >= limit) break; - result += p2*p2; + result += (unsigned long long)p2*p2; if(result >= limit) break; numbers[result] = 1; diff --git a/src/projecteuler/187.c b/src/projecteuler/187.c index a2e552e..4bee151 100644 --- a/src/projecteuler/187.c +++ b/src/projecteuler/187.c @@ -2,8 +2,6 @@ #include #include -// TODO: works only on 64 bit systems - const unsigned long limit = 100000000; int main(void) @@ -16,7 +14,7 @@ int main(void) for(i1=1; i1<=pcount; i1++) for(i2=i1; i2<=pcount; i2++) { - unsigned long result = p[i1] * p[i2]; + unsigned long long result = (unsigned long long) p[i1] * p[i2]; if(result >= limit) break; rcount++; -- cgit v1.2.3