diff options
Diffstat (limited to 'euler39.c')
-rw-r--r-- | euler39.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/euler39.c b/euler39.c new file mode 100644 index 0000000..e4cd40c --- /dev/null +++ b/euler39.c @@ -0,0 +1,38 @@ +#include <stdio.h> + +int np(int p) +{ + int n = 0; + int a; + + /* p = a + b + c, with a*a+b*b=c*c */ + /* b = (p*p-2pa)/(2p-2a) */ + if (p % 2 == 1) + return 0; + + a = 1; + while (1) { + int nu = p * (p - a*2); + int de = (p - a) * 2; + if (nu % de == 0 && nu/de > a) + n++; + if (nu/de < a) + break; + a++; + } + return n; +} + +int main() +{ + int bestp, M = 0; + int i; + for (i = 3; i<=1000; i++) { + int m = np(i); + if (m > M) { + bestp = i; + M = m; + } + } + printf("%d\n", bestp); +} |