C#

Учитывая целое число n (n>2), напишите метод, который возвращает простые числа из диапазона [2, n].

using System;
using System.Collections.Generic;
namespace Answer {
class Program {
static void Main() {
var n = InputUInt32("Введите целое положительное число: ");
var list = Primes(n);
foreach (var x in list) Console.Write($"{x} ");
Console.WriteLine();
Console.ReadKey();
}
static List Primes(uint n) {
var list = new List();
for (var x = 2U; x <= n; ++x) if (IsPrime(x)) list.Add(x);
return list;
}
static bool IsPrime(uint num) {
bool prime;
if (num < 2) return false;
else if (num <= 5 && (num == 2 || num == 3 || num == 5)) prime = true;
else if (0 == num % 2 || 0 == num % 3 || 0 == num % 5) prime = false;
else {
uint n;
for (n = 3; n * n <= num && 0 != num % n; n += 2) {; }
prime = n * n > num;
}
return prime;
}
static uint InputUInt32(string msg) {
uint value;
do Console.Write(msg); while (!uint.TryParse(Console.ReadLine(), out value));
return value;
}
}
}
Erlan Jambuzov
Erlan Jambuzov
54 594
Лучший ответ
Дарю решето Эратосфена, развлекайся:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Eratos
{
class Eratosfenum
{
private HashSet< uint> PrimeNumbers;

public HashSet< uint> Primes {get => PrimeNumbers};

private uint InitializedWith;

private void Init(uint _maxNumber)
{
uint[] EratosTemp = new uint[_maxNumber >> 1];
uint k = 3;
for (uint i = 0; i < EratosTemp.Length; i++)
{
EratosTemp[i] = k;
k += 2;
}

for (uint i = 0; i < EratosTemp.Length - 1; i++)
{
if (EratosTemp[i] == 0)
continue;
for (uint j = i + EratosTemp[i]; j < EratosTemp.Length; j += EratosTemp[i])
EratosTemp[j] = 0;
}

PrimeNumbers = (from x in EratosTemp where x != 0 select x).ToHashSet();

PrimeNumbers.Add(2);
}

public Eratosfenum(uint _maxNumber)
{
InitializedWith = _maxNumber;
Init(_maxNumber);
}

public IEnumerable Primes
{
get { return PrimeNumbers; }
}

public bool IsPrime(uint _test)
{
if (_test > InitializedWith)
throw new Exception("The test number is too large");
return PrimeNumbers.Contains(_test);
}
}
}
Слава Пилюгин
Слава Пилюгин
87 324
есть такое
я знаю метод, который возвращает реализации поиска простых чисел на С#, примерно 77 300 за 0,40 сек.
называется гугль, поиск по запросу "простые числа C#"
Борис Лубкин
Борис Лубкин
95 456
Написал
[K
[A][Х][M][E][R] Kurmet
53 188

Похожие вопросы