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

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

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

Листинг программы
  1. int num;
  2. int i;
  3. int factor;
  4. bool isprime;
  5. for(num = 2; num < 20; num++)
  6. {
  7. isprime = true;
  8. factor = 0;
  9. // Выяснить, делится ли значение переменной num нацело.
  10. for(i=2; i <= num/2; i++)
  11. {
  12. if((num % i) == 0)
  13. {
  14. // Значение переменной num делится нацело.
  15. // Следовательно, это непростое число.
  16. isprime = false;
  17. factor = i;
  18. }
  19. }
  20. if(isprime)
  21. Console.WriteLine(num + " — простое число.");
  22. else
  23. Console.WriteLine("Наибольший множитель числа " + num +
  24. " равен " + factor);
Мне не понятно начиная с вложенного цикла, почему там стоит условие i <= num/2 и почему такая проверка идет этого условия if((num % i) == 0). Можете пояснить?
Сама программа взята из примеров из книги Шилдта. Думаю многие учились по ним. "В следующем примере программы используются два цикла for для выявления простых чисел в пределах от 2 до 20. Если число оказывается непростым, то выводится наибольший его множитель."

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

textual
Листинг программы
  1. //объявляем переменную num, для чисел целого типа
  2. int num;
  3. //объявляем переменную i, для чисел целого типа
  4. int i;
  5. //объявляем переменную factor, для чисел целого типа
  6. int factor;
  7. //объявляем переменную isprime типа bool (bool может быть либо false либо true)
  8. bool isprime;
  9. //организуем цикл, который  итерирует внутри себя начиная с двойки и пока num меньше 20
  10. //после каждого прохода значение num увеличивается на единицу
  11. for(num = 2; num < 20; num++)
  12. //начало блока цикла (1)
  13.   {
  14. //задаем значение переменной
  15.       isprime = true;
  16. //задаем значение переменной
  17.       factor = 0;
  18. // организуем цикл (он кстати вложен во внешний цикл (for(num = 2; num < 20; num++) )
  19.    //итерируем цикл, наращивая счетчик на денницу, начиная  с двойки, пока i меньше или равно num/2
  20.          for(i=2; i <= num/2; i++)  
  21. //начало блока цикла (2)
  22.          {
  23. //если i и num целые числа, то взять остаток от деления одного на другое и проверить , равен ли остаток нулю
  24.            if((num % i) == 0)
  25. //если условие верно (равен нулю) то выполнить
  26. //начало блока "выполнить по условию"
  27.              {
  28. //назначить для isprime значение false
  29.                 isprime = false;
  30. //поместить значение в factor из i
  31. factor = i;
  32. //конец блока "выполнить по условию"
  33.              }
  34. //конец блока цикла (2)
  35.        }
  36. //проверить, равно ли isprime значению true
  37. if(isprime)
  38. //если равно, вывести на экран значение num и то, что написанно в кавычках
  39. Console.WriteLine(num + " — простое число.");
  40. //в противном случае
  41. else
  42. //вывести на экран то что в кавычках, затем num,затем текст в кавычка, затем значение factor
  43. Console.WriteLine("Наибольший множитель числа " + num +
  44. " равен " + factor);
  45. //конец блока цикла(1)
  46. }

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


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

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

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы