Для каждого числа последовательности найти сумму его простых делителей - Turbo Pascal
Формулировка задачи:
Вводится последовательность целых чисел, 0 - конец последовательности. Для каждого числа последовательности найти сумму его простых делителей (функцию оформить определения суммы простых делителей числа)
Объясните пожалуйста код программы.
Это я нашёл количество его делителей, а мне надо сумму его простых делителей.
Пожалуйста помогите, мне очень нужно сейчас.
Типо так но
Листинг программы
- program ask;
- Uses crt;
- Var a:array[1..100]of integer;
- function delitel (n:integer):integer;
- Var i,k:integer;
- Begin
- K:=2;
- For i:=2 to (n div 2) do
- If (n mod i=0) then
- K:=k+1;
- Delitel:=k;
- End; begin
- end.
Решение задачи: «Для каждого числа последовательности найти сумму его простых делителей»
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
. - Программа завершается после ввода последнего числа, и выводится сообщение с результатом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д