Пояснить последовательность работы программы - C#

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

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

int num;
int i;
int factor;
bool isprime;
for(num = 2; num < 20; num++) 
{
isprime = true;
factor = 0;
// Выяснить, делится ли значение переменной num нацело.
for(i=2; i <= num/2; i++) 
{
if((num % i) == 0) 
{
// Значение переменной num делится нацело.
// Следовательно, это непростое число.
isprime = false;
factor = i;
}
}
if(isprime)
Console.WriteLine(num + " — простое число.");
else
Console.WriteLine("Наибольший множитель числа " + num +
" равен " + factor);
Мне не понятно начиная с вложенного цикла, почему там стоит условие i <= num/2 и почему такая проверка идет этого условия if((num % i) == 0). Можете пояснить?
Сама программа взята из примеров из книги Шилдта. Думаю многие учились по ним. "В следующем примере программы используются два цикла for для выявления простых чисел в пределах от 2 до 20. Если число оказывается непростым, то выводится наибольший его множитель."

Решение задачи: «Пояснить последовательность работы программы»

textual
Листинг программы
//объявляем переменную num, для чисел целого типа
int num;
//объявляем переменную i, для чисел целого типа
int i; 
//объявляем переменную factor, для чисел целого типа
int factor;
//объявляем переменную isprime типа bool (bool может быть либо false либо true)
bool isprime;
//организуем цикл, который  итерирует внутри себя начиная с двойки и пока num меньше 20
//после каждого прохода значение num увеличивается на единицу
for(num = 2; num < 20; num++) 
//начало блока цикла (1)
  {
//задаем значение переменной
      isprime = true;
//задаем значение переменной
      factor = 0;
// организуем цикл (он кстати вложен во внешний цикл (for(num = 2; num < 20; num++) )
   //итерируем цикл, наращивая счетчик на денницу, начиная  с двойки, пока i меньше или равно num/2
         for(i=2; i <= num/2; i++)  
//начало блока цикла (2) 
         {
//если i и num целые числа, то взять остаток от деления одного на другое и проверить , равен ли остаток нулю
           if((num % i) == 0) 
//если условие верно (равен нулю) то выполнить 
//начало блока "выполнить по условию"
             {
//назначить для isprime значение false
                isprime = false;
//поместить значение в factor из i
factor = i;
//конец блока "выполнить по условию"
             }
//конец блока цикла (2)
       }
//проверить, равно ли isprime значению true
if(isprime)
//если равно, вывести на экран значение num и то, что написанно в кавычках
Console.WriteLine(num + " — простое число.");
//в противном случае
else
//вывести на экран то что в кавычках, затем num,затем текст в кавычка, затем значение factor
Console.WriteLine("Наибольший множитель числа " + num +
" равен " + factor);
//конец блока цикла(1)
}

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


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

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

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