Для каждого числа последовательности найти сумму его простых делителей - C (СИ)

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

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

Помогите пожалуйста. Дана последовательность из целых чисел. 0 — конец последовательности. Для каждого числа найти сумму его простых делителей. Оформить функцией определение суммы простых делителей числа. Думаю, мне нужна помощь только с функцией. Каркас думаю этот сгодиться
#include <cstdlib>
#include <iostream>
/*для положительных элементов последовательности*/
using namespace std;
int summaprostihdeliteley (int a)
{
  int sum=0;
 .............................
  return sum;
}
int main(int argc, char *argv[])
{  int x;
   int a[100];
   int n=0;
   int b;
   cin >> b;
   while (b!=0)
   { a[n]=b;
     n++;
    cin >> b;
      }
  for (int i=1;i<n;i++) 
    {
    cout <<a[i]<<" ==>"<<summaprostihdeliteley(a[i])<<"\n";}
    system("PAUSE");
    return EXIT_SUCCESS;
}

Решение задачи: «Для каждого числа последовательности найти сумму его простых делителей»

textual
Листинг программы
int summaprostihdeliteley(int a)
{ int i, s;
    for(i=2, s=0; a > 1; i++) {
       if (a%i==0) {
          s += i;
          while(a%i==0) a/= i;  // Каждый делитель считается только 1 раз
       }
     }
      return s;
}

Объяснение кода листинга программы

В данном коде функция summaprostihdeliteley(int a) принимает на вход целое число a и возвращает сумму его простых делителей. Происходит это следующим образом:

  1. Переменная i инициализируется значением 2, а переменная s — 0.
  2. Далее происходит цикл for, который выполняется до тех пор, пока a больше 1.
  3. Внутри цикла проверяется, делится ли a на i без остатка (если да, то это простой делитель).
  4. Если условие выполняется, то к переменной s прибавляется значение i, а переменная a делится на i (чтобы убрать этот делитель).
  5. После выполнения цикла, функция возвращает значение переменной s.

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


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

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

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