#include #include int prime(long long int value) { unsigned int divisor = 3; unsigned int square = divisor * divisor; 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 main() { int isok = 1; long long unsigned int n = 1, i, sum = 0, d=0, hundreds_of_millions = 0; for (n = 1; n <= 100000000; n++) { isok = 1; for (i = 1; i <= sqrt(n); i++) { if (n % i == 0) { d = n / i; if (! (prime(i + d) && prime(n + 1))) { isok = 0; break; } } } if (isok) { sum += n; while (sum >= 100000000) { sum -= 100000000; hundreds_of_millions++; } } if ((n % 1000000) == 0) { printf("sum = %llu", hundreds_of_millions); printf(" x 100000000 + %llu [", sum); printf("%llu]\n", n); } } return 0; }