写一个方法得到一个素数数组,这些素数不能大于给定的自然数。
我看网上大多数的实现都是用自然数n除以2到n/2+1的数,如果整除了,就判定不是素数。
我的想法不一样,我一个数组保存已经得到的素数,然后用n除以这些素数,如果整除了,就判定不是素数。
具体实现如下:
static int[] GetPrimeNumbers(int boundary)
{
List<int> primeList = new List<int>();
int n = 2;
while (n <= boundary)
{
bool isPrime = true;
for (int i = 0; i < primeList.Count; i++)
{
if (n % primeList[i] == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
{
primeList.Add(n);
}
if (n < 3)
{
n++;
}
else
{
n += 2;
}
}
return primeList.ToArray();
}
{
List<int> primeList = new List<int>();
int n = 2;
while (n <= boundary)
{
bool isPrime = true;
for (int i = 0; i < primeList.Count; i++)
{
if (n % primeList[i] == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
{
primeList.Add(n);
}
if (n < 3)
{
n++;
}
else
{
n += 2;
}
}
return primeList.ToArray();
}