Пояснить последовательность работы программы - 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)
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д