Инкремент. Как идет пересчет в данном коде - C#

Узнай цену своей работы

Формулировка задачи:

Собственно учу по Шилду, немного не пойму как идет пересчет в данном коде
using System;
class ChkNum
{
    public bool IsPrime(int x)
    {
        if (x <= 1) return false;
 
        for (int i = 2; i <= x / i; i++)
        {
            if ((x % i) == 0) return false;
        }
        return true;
    }
}
class Parm
{
    static void Main()
    {
        ChkNum ob = new ChkNum();
        for (int i = 2; i < 10; i++)
        {
            if (ob.IsPrime(i)) Console.WriteLine(i + " prostoe chislo");
            else Console.WriteLine(i + " ne prostoe");
        }
    }
}
я понимаю что Х присваивается значение (i), собственной i у нас = 2 Давайте подставим
if (2 <= 1) return false; - условие не срабатывает, переходим на следующий шаг
 
        for (int i = 2; 2 <= 2 / 2; i++) - условие опять же не срабатывает так как 2 <=2/2 -неверно идем к ретурн тру
        if ((2 %2) == 0) return false;
        
        return true;
Следующим действием как я понял х увеличивается на 1 ? То есть наша (i) теперь равна трем, давайте подставим if (3 <= 1) return false; - условие не выполняется for (int i -2; 2 <=3/2; i++) - Тоже не выполняется, опять идем к тру теперь 4 if (4<=1) - не выполняется for ( int i -2; 2 <=4/2; i++) if (( 2 % 2) == 0) - условие выполняется и получается Фолс. Вот, с этим я разобрался. почему тогда в самом начале кода, стоит инкремент for (int i = 2; i <= x / i; i++) если у нас I - Это всегда двойка, какой принцип работы инкремента ? Может идет постоянно проверка и значение "i" Растет с каждим циклом ? Объясните пожалуйста, составьте на число 5, 6,7. Покажите на примере, уже час голову ломаю, даже зарегистрировался тут )

Решение задачи: «Инкремент. Как идет пересчет в данном коде»

textual
Листинг программы
int max;
 
        if (IsPrime(a) || IsPrime(b)) return 1;// если IsPrime(a) == true или IsPrime(b) == true, то возавращается 1
 
        max = a < b ? b : a; //Если а<b, то max = b, иначе max = a
 
        for (int i = 2; i <= max / 2; i++)
            if (((a % i) == 0) && ((b % i) == 0)) return i;//a % i Остаток от деления a на i
 
        return 1;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы