Problem:
Problem B: Prime Gap

The sequence of n - 1 consecutive composite numbers (positive integers that are not prime and
not equal to 1) lying between two successive prime numbers p and p + n is called a prime gap of length n. For example, (24, 25, 26, 27, 28) between 23 and 29 is a prime gap of length 6.

Your mission is to write a program to calculate, for a given positive integer k, the length of the prime gap that contains k. For convenience, the length is considered 0 in case no prime gap
contains k.

Input

The input is a sequence of lines each of which contains a single positive integer. Each positive
integer is greater than 1 and less than or equal to the 100000th prime number, which is 1299709.
The end of the input is indicated by a line containing a single zero.

Output

The output should be composed of lines each of which contains a single non-negative integer. It
is the length of the prime gap that contains the corresponding positive integer in the input if it
is a composite number, or 0 otherwise. No other characters should occur in the output.

Sample Input

10
11
27
2
492170
0

Output for the Sample Input

4
0
6
0
114

Solution in C# (judge verdict: Wrong Answer)

using System;
using System.Linq;
using System.Collections.Generic;




namespace ConsoleApplication1 {

    

    class ClassMain {

        public static bool[] primes = Enumerable.Repeat(true, 1500000 + 1).ToArray();

        public static void sieve() {
            primes[0] = false; primes[1] = false;
            for (int i = 2; i < primes.Length / 2 + 1; i++) {
                if (primes[i]) {
                    for (int j = 2; j * i < primes.Length; j++) {
                        primes[i * j] = false;
                    }
                }
            }
        }


        public static void Main(String[] args) {
           string line;
            while ((line = Console.ReadLine()) != null) {
                //int[] ints = line.Split(' ').Select(int.Parse).ToArray();
                //int n = ints[0];
                int n = int.Parse(line);                
                if (n == 0) { break; }
                if (primes[n]) {
                    Console.WriteLine(0);
                }
                else {
                    int moreThanCnt = 0;
                    int lessThanCnt = 0;
                    for (int i = 1; i + n < 1500000 + 1; i++) {
                        if (primes[i + n] == false) { moreThanCnt++; }
                        else { break; }
                    }
                    for (int i = 1;  n - i  > 1; i++) {
                        if (primes[n - i] == false) { lessThanCnt++; }
                        else { break; }
                    }
                    Console.WriteLine(moreThanCnt + lessThanCnt + 1);
                }
            }
        }

    }

    


}