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