Algorithme efficace pour obtenir des nombres premiers entre deux grands nombres

Je suis un débutant en C#, je suis en train d'écrire une application pour obtenir les nombres premiers entre deux nombres entrés par l'utilisateur. Le problème est: les grands nombres (les nombres valides sont dans la gamme de 1 à 1000000000) obtenir les nombres premiers prend beaucoup de temps et selon le problème, je vais résoudre, l'ensemble de l'opération doit être effectuée dans un petit intervalle de temps. C'est le problème le lien pour plus d'explication:
SPOJ-Premier

Et voici la partie de mon code qui est responsable de l'obtention de nombres premiers:

  public void GetPrime()
    {            
        int L1 = int.Parse(Limits[0]);
        int L2 = int.Parse(Limits[1]);

        if (L1 == 1)
        {
            L1++;
        }

        for (int i = L1; i <= L2; i++)
        {
            for (int k = L1; k <= L2; k++)
            {
                if (i == k)
                {
                    continue;
                }
                else if (i % k == 0)
                {
                    flag = false;
                    break;
                }
                else
                {
                    flag = true;
                }
            }

            if (flag)
            {
                Console.WriteLine(i);
            }
        }
    }

Est-il un algorithme plus rapide?
Merci à l'avance.

source d'informationauteur rafael