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 не является простым числом. } } } } }