40 lines
2.4 KiB
C#
40 lines
2.4 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace Alg;
|
|||
|
|
|||
|
class Program // O(n^2)//Это объявление класса с именем "Program". Комментарий "// O(n^2)" указывает на то, что алгоритм внутри метода "FindPrimes" имеет временную сложность O(n^2), что означает квадратичную зависимость от размера входных данных.
|
|||
|
{
|
|||
|
static void Main(string[] args)//Это объявление метода Main, который является точкой входа в программу. Он принимает массив строк args в качестве аргументов.
|
|||
|
{
|
|||
|
int n1 = Convert.ToInt32(Console.ReadLine());//Прочитывает ввод пользователя с консоли и конвертирует его в целое число, которое сохраняется в переменной n1.
|
|||
|
FindPrimes(n1);//Вызов метода FindPrimes с аргументом n1.
|
|||
|
}
|
|||
|
|
|||
|
static void FindPrimes(int n)//Объявление метода FindPrimes, который принимает целочисленный аргумент n.
|
|||
|
{
|
|||
|
bool[] isPrime = new bool[n + 1];//Создание массива isPrime длиной n+1, который будет использоваться для отслеживания простых чисел.
|
|||
|
for (int i = 2; i <= n; i++)//Начало цикла от 2 до n.
|
|||
|
{
|
|||
|
isPrime[i] = true;//Установка флага isPrimei в true, так как i является простым числом.
|
|||
|
}
|
|||
|
|
|||
|
for (int i = 2; i <= n; i++)//Начало второго цикла от 2 до n.
|
|||
|
{
|
|||
|
|
|||
|
|
|||
|
if (isPrime[i] == true)//Проверка, является ли число i простым.
|
|||
|
{
|
|||
|
Console.Write(i + " ");//Вывод числа i на консоль.
|
|||
|
for (int j = i * i; j <= n; j += i)//Цикл, который помечает значения, кратные i, как непростые.
|
|||
|
{
|
|||
|
isPrime[j] = false;//Установка флага isPrimej в false, так как j не является простым числом.
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|