Определить, больше ли сумма сумм простых множителей элементов, идущих после последнего отрицательного элемента, заданного числа - C (СИ)

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

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

дана целочисленная таблица a[1..m]. Среди ее элементов есть хотя бы один отрицательный. Больше ли сумма сумм простых множителей элементов идущих после последнего отрицательного элемента заданного числа L

Решение задачи: «Определить, больше ли сумма сумм простых множителей элементов, идущих после последнего отрицательного элемента, заданного числа»

textual
Листинг программы
#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.

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


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

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

14   голосов , оценка 3.929 из 5
Похожие ответы