Для каждого числа последовательности найти сумму его простых делителей - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д