// The most efficient solution // Requires only 1.1 sec for L = 999,999 (#-Triangles = 15,096,326) import java.io.*; import java.util.*; public class Crab2 { private static final int LMAX = 100000; private static final Scanner cin = new Scanner(System.in); public static void main(String[] args) { boolean[] isPrime; { isPrime = new boolean[LMAX+1]; Arrays.fill(isPrime, true); isPrime[0] = false; isPrime[1] = false; for(int i = 2; i <= LMAX; i++) { if(isPrime[i]) { for(int j = i + i; j <= LMAX; j += i) { isPrime[j] = false; } } } } int[] primes; int[] starts; { primes = new int[LMAX+1]; starts = new int[LMAX+1]; int j = 0; for(int i = 0; i <= LMAX; i++) { starts[i] = j; if(isPrime[i]) { primes[j++] = i; } } } for(int l; (l = cin.nextInt()) != 0; ) { int count = 0; int amin = 2; int amax = l / 3; for(int a, i = starts[amin]; (a = primes[i]) <= amax; i++) { int bmin = Math.max(a, (l / 2) - a + 1); int bmax = (l - a) / 2; for(int b, j = starts[bmin]; (b = primes[j]) <= bmax; j++) { if(isPrime[l - (a + b)]) { count++; } } } System.out.println(count); } } }