public static int[] Sieve(int n)
{
if (n <= 1)
return null;
int[] a = new int[n+1];
for (int i = 2; i < a.Length; i++)
{
a[i] = i;
}
for (int i = 2; i*i <= n; i++)
{
if (a[i] != 0)//没有被前面的步骤消去
{
for (int j = i*i; j <= n; j=j+i)
{
a[j] = 0;//将该元素标记为已经消去
}
}
}
List<int> L=new List<int>();
for (int i = 2; i < a.Length; i++)
{
if (a[i] != 0)
{
L.Add(a[i]);
}
}
return L.ToArray();
}