summaryrefslogtreecommitdiff
path: root/euler39.c
diff options
context:
space:
mode:
Diffstat (limited to 'euler39.c')
-rw-r--r--euler39.c38
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);
+}