Определить, больше ли сумма сумм простых множителей элементов, идущих после последнего отрицательного элемента, заданного числа - C (СИ)
Формулировка задачи:
Решение задачи: «Определить, больше ли сумма сумм простых множителей элементов, идущих после последнего отрицательного элемента, заданного числа»
#include <stdio.h> #include <conio.h> #define M 10 int sum_factor(int x) /* здесь находится сумма простых множителей */ { int cnt, s = 0, i = 2; while(i < x / 2) { for(cnt = 0; (x > 1) && (x % i == 0); x /= i) cnt += 1; if(cnt) s += i; i += (i == 2 ? 1 : 2); } if(x > 1) s += x; return s; } int main() { int L = 20, s = 0, i; int a[M] = {1, 21, 35, 42, 15, 46, -72, 178, 29, 10}; for(i = 0; a[i] > 0; i++); for(i = i + 1; i < M; i++) s += sum_factor(a[i]); printf("Сумма сумм простых множителей (%d) %s меньше L = %d\n", s, (s < L ? "" : "не"), L); return 0; }
Объяснение кода листинга программы
В этом коде определен набор чисел в массиве a
, и первое положительное число в этом массиве используется как пороговое значение для определения последнего отрицательного числа.
Затем, используя функцию sum_factor
, которая принимает число и возвращает сумму его простых множителей, в цикле суммируются простые множители всех чисел в массиве a
после последнего отрицательного числа.
Функция sum_factor
использует цикл while
для перебора всех чисел от 2 до x/2
, а затем использует вложенный цикл for
для проверки, делится ли x
на текущее число без остатка. Если делится, то переменная cnt
увеличивается на 1, и если x
больше 1, то к s
добавляется текущее число.
В основной функции, после определения последнего отрицательного числа в массиве a
, в цикле суммируются простые множители всех чисел в массиве a
после последнего отрицательного числа.
Затем выводится сообщение, говорящее, является ли сумма сумм простых множителей меньше или больше L
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д