Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define N 10000
- int prime[N];
- int chosen[3];
- int av01, av02, av12, av012;
- void gen() {
- // The sieve of Eratosthenes algorithm.
- int i, j;
- prime[0] = prime[1] = 0;
- for (i = 2; i < N; i++) prime[i] = 1;
- for (i = 2; i < N; i++)
- if (prime[i])
- for (j = i*i; j < N; j += i)
- prime[j] = 0;
- }
- void rec(int level, int i) {
- int j;
- if (level == 3) {
- av01 = (chosen[0] + chosen[1])/2;
- if (av01 * 2 != chosen[0] + chosen[1]) return;
- av02 = (chosen[0] + chosen[2])/2;
- if (av02 * 2 != chosen[0] + chosen[2]) return;
- av12 = (chosen[1] + chosen[2])/2;
- if (av12 * 2 != chosen[1] + chosen[2]) return;
- av012 = (chosen[0] + chosen[1] + chosen[2])/3;
- if (av012 * 3 != chosen[0] + chosen[1] + chosen[2]) return;
- if (prime[av01] && prime[av02] && prime[av12] && prime[av012]) {
- printf("%d %d %d\n", chosen[0], chosen[1], chosen[2]);
- exit(0);
- }
- return;
- }
- for (j = i+1; j < N; j++)
- if (prime[j]) {
- chosen[level] = j;
- rec(level+1, j);
- }
- }
- int main() {
- gen();
- rec(0, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement