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

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

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

Вводится последовательность целых чисел, 0 - конец последовательности. Для каждого числа последовательности найти сумму его простых делителей (функцию оформить определения суммы простых делителей числа) Объясните пожалуйста код программы.
Пожалуйста помогите, мне очень нужно сейчас.
Типо так но
Листинг программы
  1. program ask;
  2. Uses crt;
  3. Var a:array[1..100]of integer;
  4. function delitel (n:integer):integer;
  5. Var i,k:integer;
  6. Begin
  7. K:=2;
  8. For i:=2 to (n div 2) do
  9. If (n mod i=0) then
  10. K:=k+1;
  11. Delitel:=k;
  12. End; begin
  13. end.
Это я нашёл количество его делителей, а мне надо сумму его простых делителей.

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

textual
Листинг программы
  1. uses crt;
  2. function summa(n:integer):integer;
  3. function prost(x:integer):boolean;
  4. var  y:integer;
  5.      f:boolean;
  6. begin
  7. if x<2 then f:=false{0,1 не простое}
  8. else if x=2 then f:=true{2 простое}
  9. else if x mod 2=0 then f:=false{четные больше 2 не простые}
  10. else
  11.  begin
  12.   f:=true;
  13.   y:=3;
  14.   while(y*y<=x)and f do
  15.   if x mod y=0 then f:=false
  16.   else inc(y,2);
  17.  end;
  18. prost:=f
  19. end;
  20. var i,s:integer;
  21. begin
  22. if prost(n) then s:=n else s:=0;
  23. for i:=2 to n div 2 do
  24. if(n mod i=0)and prost(i) then s:=s+i;
  25. summa:=s;
  26. end;
  27. var a:integer;
  28. begin
  29. clrscr;
  30. writeln('Вводите целые положительные числа, окончание ввода 0');
  31. repeat
  32. readln(a);
  33. if a<>0 then writeln('Сумма простых делителей=',summa(a));
  34. until a=0;
  35. readln;
  36. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы