Я пытался создать эту вспомогательную функцию в C #, которая возвращает первые n простых чисел. Я решил хранить цифры в словаре в формате <int,bool>
. Ключом является число, о котором идет речь, и значение bool представляет, является ли int простым или нет. Существует масса ресурсов для вычисления / генерации простых чисел (включая SO), поэтому я подумал о том, чтобы объединить массы, создав еще один простой генератор простых чисел.
Моя логика выглядит следующим образом:
public static Dictionary<int,bool> GetAllPrimes(int number)
{
Dictionary<int, bool> numberArray = new Dictionary<int, bool>();
int current = 2;
while (current <= number)
{
//If current has not been marked as prime in previous iterations,mark it as prime
if (!numberArray.ContainsKey(current))
numberArray.Add(current, true);
int i = 2;
while (current * i <= number)
{
if (!numberArray.ContainsKey(current * i))
numberArray.Add(current * i, false);
else if (numberArray[current * i])//current*i cannot be a prime
numberArray[current * i] = false;
i++;
}
current++;
}
return numberArray;
}
Было бы замечательно, если бы мудрый предоставил мне предложения, оптимизации, с возможными рефакторингами. Мне также было интересно, поможет ли включение словаря во время выполнения этого фрагмента.