Advertisement
iocoder

Untitled

Sep 18th, 2012
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.06 KB | None | 0 0
  1. #include <stdio.h>
  2. #define N 10000
  3. int prime[N];
  4. int chosen[3];
  5. int av01, av02, av12, av012;
  6.  
  7. void gen() {
  8.     // The sieve of Eratosthenes algorithm.
  9.     int i, j;
  10.     prime[0] = prime[1] = 0;
  11.     for (i = 2; i < N; i++) prime[i] = 1;
  12.     for (i = 2; i < N; i++)
  13.         if (prime[i])
  14.             for (j = i*i; j < N; j += i)
  15.                 prime[j] = 0;
  16. }
  17.  
  18. void rec(int level, int i) {
  19.     int j;
  20.    
  21.     if (level == 3) {
  22.         av01 = (chosen[0] + chosen[1])/2;
  23.         if (av01 * 2 != chosen[0] + chosen[1]) return;
  24.         av02 = (chosen[0] + chosen[2])/2;
  25.         if (av02 * 2 != chosen[0] + chosen[2]) return;
  26.         av12 = (chosen[1] + chosen[2])/2;
  27.         if (av12 * 2 != chosen[1] + chosen[2]) return;
  28.        
  29.         av012 = (chosen[0] + chosen[1] + chosen[2])/3;
  30.         if (av012 * 3 != chosen[0] + chosen[1] + chosen[2]) return;
  31.        
  32.         if (prime[av01] && prime[av02] && prime[av12] && prime[av012]) {
  33.             printf("%d %d %d\n", chosen[0], chosen[1], chosen[2]);
  34.             exit(0);
  35.         }
  36.         return;
  37.     }
  38.    
  39.     for (j = i+1; j < N; j++)
  40.         if (prime[j]) {
  41.             chosen[level] = j;
  42.             rec(level+1, j);
  43.         }
  44. }
  45.  
  46. int main() {
  47.     gen();
  48.     rec(0, 0);
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement