Для каждого числа последовательности найти сумму его простых делителей - 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;
}

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

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;
}

11   голосов, оценка 4.273 из 5


СОХРАНИТЬ ССЫЛКУ