Операции с числами: объясните принцип работы кода - C#

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

Доброй ночи. Можете человеческим языком объяснить, как работает эта программа?
using System;
class FindPrimes
{
    public static void Main()
    {
        int num;
        int i;
        bool isprime;
        int factor;
        for (num = 2; num < 20; num++)
        {
            isprime = true;
            factor = 0;
            // Узнаем, делится ли num на i без остатка.
            for (i = 2; i <= num / 2; i++)
            {
                if ((num % i) == 0)
                {
                    // Если num делится на i без остатка,
                    // значит num — число не простое,
                    isprime = false;
                    factor = i;
                }
            }
            if (isprime)
                Console.WriteLine(num + " -- простое число.");
            else
                Console.WriteLine("Максимальный множитель числа " + num + " равен " + factor);
 
        }
    }
}
Я пока нуб. Читаю Герберта Шилдта "Полный справочник по C#", дошел до этого примера в книге, но он даже не объясняет принцип работы этой задачи, первая за все время такая. По условию тут описание: следующая программа использует два цикла for для отыскания простых чисел в диапазоне от 2 до 20. Если число не простое, программа отобразит его самый большой множитель. Если я уже и разобрался с принципом подсчета, с присваиванием isprime false и true и как это работает, то есть два непонятных момента: 1) зачем нужно значение factor = 0; и какую роль оно исполняет, просто когда убираю его - компилятор начинает ругаться, но тем не менее, если это проигнорировать, все равно работает и без этой переменной; 2) и как выводится значение num и factor в else, если вывод прописан во внешнем блоке, а той же переменной factor присваивается значение i во внутреннем блоке. Был бы безмерно благодарен тому, кто простыми словами, а не техническими терминами смог растолковать всю суть работы. Пока до конца не пойму - не могу двигаться дальше в изучении.

Код к задаче: «Операции с числами: объясните принцип работы кода - C#»

textual
public static void Main()              //уровень 1
{
    int factor;                        //объявление переменной на уровне 1
    for (num = 2; num < 20; num++)     //уровень 2
    {
        factor = 0;                    //инициализация переменной на уровне 2
        for (i = 2; i <= num / 2; i++) //уровень 3
        {
            if ((num % i) == 0)        //уровень 4
            {
                factor = i;            //установка значения переменной на уровне 4
            }
        }
        if (isprime)
            Console.WriteLine(num + " -- простое число.");
        else
            Console.WriteLine("Максимальный множитель числа " + num + " равен " + factor); //чтение значения переменной на уровне 2
    }
}

8   голосов, оценка 3.750 из 5


СОХРАНИТЬ ССЫЛКУ