Разложение чисел на простые множители (зацикливание программы) - C (СИ)
Формулировка задачи:
Помогите решить проблему зацикливания программы. Заранее спасибо
В задаче требуется разложить числа в промежутке от n1 до n2 на простые множители.
int main() {
int n1, n2, div = 2;
scanf ("%d %d", &n1, &n2);
while (n1<=n2) {
printf("\n %d=1",n1);
while (n1 > 1)
{
while (n1 % div == 0)
{
printf("*%d",div);
n1 = n1 / div;
}
div++;
}
n1++;
div=2;
}
}Решение задачи: «Разложение чисел на простые множители (зацикливание программы)»
textual
Листинг программы
int main() {
int n1, n2, div = 2, n3;
scanf ("%d %d", &n1, &n2);
while (n1<=n2) {
printf("\n %d=1",n1);
n3=n1;
while (n3 > 1)
{
while (n3 % div == 0)
{
printf("*%d",div);
n3= n3 / div;
}
div++;
}
n1++;
div=2;
}
}
Объяснение кода листинга программы
В этом коде выполняется разложение чисел на простые множители. Цикл while собирает числа в заданном диапазоне и разбивает каждое из них на простые множители. Первое число в паре считывается с помощью функции scanf.
- Установка начального значения переменных:
- n1 - первое число для разложения
- n2 - второе число для разложения
- div - переменная для хранения текущего делителя (начальное значение 2)
- n3 - временная переменная для хранения разложенного числа
- Разложение чисел:
- Внутренний цикл while выполняется для каждого числа в диапазоне от n1 до n2.
- Внешний цикл while выполняет разложение числа на простые множители.
- Для каждого простого множителя, внутренний цикл while проверяет, делится ли число на текущий делитель без остатка.
- Если делится, то число делится на текущий делитель и добавляется звездочка перед делителем.
- После завершения внутреннего цикла, делитель увеличивается на 1.
- После завершения внешнего цикла, n1 увеличивается на 1 и div сбрасывается обратно на 2. Пример работы кода: Введите два числа, разделенных пробелом, например, 12 16 12=122 16=122*2 Код запрашивает два числа, затем выводит их разложение на простые множители.