Для каждого числа последовательности найти сумму его простых делителей - 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 и выполняет следующие действия:
- Создает две функции:
summa
иprost
.summa
принимает целое числоn
и возвращает сумму его простых делителей, аprost
проверяет, является ли число простым. - Объявляет переменные
y
,f
иs
.y
используется для поиска простых чисел,f
используется для отслеживания того, является ли число простым, аs
используется для хранения суммы простых делителей. - В цикле
while
ищет простые числа от 3 до квадратного корня изx
. Если числоy
умножается на само себя и остаток от деленияx
наy
равен 0, тоf
устанавливается вfalse
, что означает, что числоy
не является простым. Если это не происходит, тоf
устанавливается вtrue
, иy
увеличивается на 2. - После завершения цикла
while
,f
будет равноtrue
, еслиx
имеет хотя бы одно простое делитель, иs
будет равно сумме этих делителей. - Функция
summa
вызывается для получения суммы простых делителей числаa
. - Программа завершается после ввода последнего числа, и выводится сообщение с результатом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д