ISEbd-12_Osyagina_A.A._Simple/LAB02/3.1/Program.cs

40 lines
2.4 KiB
C#
Raw Normal View History

2024-05-01 12:26:51 +04:00
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 не является простым числом.
}
}
}
}
}