#include 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); }