Для каждого числа последовательности найти сумму его простых делителей - 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 и возвращает сумму его простых делителей. Происходит это следующим образом:
- Переменная i инициализируется значением 2, а переменная s — 0.
- Далее происходит цикл for, который выполняется до тех пор, пока a больше 1.
- Внутри цикла проверяется, делится ли a на i без остатка (если да, то это простой делитель).
- Если условие выполняется, то к переменной s прибавляется значение i, а переменная a делится на i (чтобы убрать этот делитель).
- После выполнения цикла, функция возвращает значение переменной s.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д