#include "stdafx.h" bool prime(long long int value) { unsigned int divisor = 3; unsigned int square = divisor * divisor; if (value < 2) return 0; if (value == 2) return 1; if (value == 3) return 1; if (!(value & 1)) return 0; /* even */ while (square < value && value % divisor) { ++divisor; square += 4 * divisor; ++divisor; } return ((value % divisor) != 0); } int runprimes(int x, int y) { int count = 0; bool stillprime = true; while (stillprime) { stillprime = prime(count * count + x * count + y); count++; } count = count - 1; return count; } int _tmain(int argc, _TCHAR* argv[]) { int maxprimes = 0; int maxi = 0; int maxj = 0; int i, j; for (i = -1000; i <1000; i++) { for (j = -1000; j <1000; j++) { int nprimes = runprimes(i,j); if (nprimes > maxprimes) { maxprimes = nprimes; maxi = i; maxj = j; printf("%d -> (%d,%d) - prod=%d\n",maxprimes,maxi,maxj,(maxi * maxj)); } } } return 0; }