Самый элегантный способ генерировать первичные числа [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Самый элегантный способ генерировать первичные числа [закрыто]

Сообщение Anonymous »

Какой самый элегантный способ реализации этой функции: < /p>

Код: Выделить всё

ArrayList generatePrimes(int n)
Эта функция генерирует первые n primes (редактирование: где n> 1 ), поэтому генерировать (5) вернет arraylist с {2, 3, 5, 7, 11} . (Я делаю это в C#, но я доволен реализацией Java - или любым другим подобным языком в этом отношении (так что не Хаскелл)). < /P>
Я действительно знаю, как написать эту функцию, но когда я это сделал прошлой ночью, это не было так приятно, как я надеялся. Вот что я придумал: < /p>
ArrayList generatePrimes(int toGenerate)
{
ArrayList primes = new ArrayList();
primes.Add(2);
primes.Add(3);
while (primes.Count < toGenerate)
{
int nextPrime = (int)(primes[primes.Count - 1]) + 2;
while (true)
{
bool isPrime = true;
foreach (int n in primes)
{
if (nextPrime % n == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
{
break;
}
else
{
nextPrime += 2;
}
}
primes.Add(nextPrime);
}
return primes;
}
< /code>
Я не слишком обеспокоен скоростью, хотя я не хочу, чтобы это было явно неэффективным. Я не возражаю против того, какой метод используется (наивное или сито или что -нибудь еще), но я хочу, чтобы он был довольно коротким и очевидным, как он работает.

Подробнее здесь: https://stackoverflow.com/questions/104 ... me-numbers
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»