Для каждого числа последовательности найти сумму его простых делителей - Turbo Pascal

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

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

Вводится последовательность целых чисел, 0 - конец последовательности. Для каждого числа последовательности найти сумму его простых делителей (функцию оформить определения суммы простых делителей числа) Объясните пожалуйста код программы.
Пожалуйста помогите, мне очень нужно сейчас.
Типо так но
Это я нашёл количество его делителей, а мне надо сумму его простых делителей.

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

textual
Листинг программы
uses crt;
function summa(n:integer):integer;
function prost(x:integer):boolean;
var  y:integer;
     f:boolean;
begin
if x<2 then f:=false{0,1 не простое}
else if x=2 then f:=true{2 простое}
else if x mod 2=0 then f:=false{четные больше 2 не простые}
else
 begin
  f:=true;
  y:=3;
  while(y*y<=x)and f do
  if x mod y=0 then f:=false
  else inc(y,2);
 end;
prost:=f
end;
var i,s:integer;
begin
if prost(n) then s:=n else s:=0;
for i:=2 to n div 2 do
if(n mod i=0)and prost(i) then s:=s+i;
summa:=s;
end;
var a:integer;
begin
clrscr;
writeln('Вводите целые положительные числа, окончание ввода 0');
repeat
readln(a);
if a<>0 then writeln('Сумма простых делителей=',summa(a));
until a=0;
readln;
end.

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

Этот код написан на Turbo Pascal и выполняет следующие действия:

  1. Создает две функции: summa и prost. summa принимает целое число n и возвращает сумму его простых делителей, а prost проверяет, является ли число простым.
  2. Объявляет переменные y, f и s. y используется для поиска простых чисел, f используется для отслеживания того, является ли число простым, а s используется для хранения суммы простых делителей.
  3. В цикле while ищет простые числа от 3 до квадратного корня из x. Если число y умножается на само себя и остаток от деления x на y равен 0, то f устанавливается в false, что означает, что число y не является простым. Если это не происходит, то f устанавливается в true, и y увеличивается на 2.
  4. После завершения цикла while, f будет равно true, если x имеет хотя бы одно простое делитель, и s будет равно сумме этих делителей.
  5. Функция summa вызывается для получения суммы простых делителей числа a.
  6. Программа завершается после ввода последнего числа, и выводится сообщение с результатом.

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


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

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

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