Найти количество простых делителей числа - Pascal ABC
Формулировка задачи:
....а как все вместе то?
Решение задачи: «Найти количество простых делителей числа»
textual
Листинг программы
uses crt;
var n,i,j,k,s:integer;
flag:boolean;
begin
write('n>0 n=');
readln(n);
writeln('Простые делители:');
if n=1 then
begin
k:=0;
s:=0;
end
else
begin
k:=0;
s:=0;
i:=2;
while i<=n do
if n mod i=0 then {проверяем делимость}
begin
j:=2; {если делится, проверяем на простое}
Flag:=true;
While (j*j<=i)and flag do
If i mod j=0 then flag:=false
else j:=j+1;
if Flag then {если простое}
begin
k:=k+1; {считаем количество}
s:=s+i; {считаем сумму}
write(i,' '); {выводим}
i:=i+1; {дальше}
end
else i:=i+1; {не простое - вперед}
end
else i:=i+1; {не делится - вперед}
end;
writeln;
write('Количество простых делителей=',k,' их сумма=',s);
readln
end.
Объяснение кода листинга программы
- В начале кода подключается библиотека crt, которая предоставляет функции ввода-вывода.
- Объявляются переменные n, i, j, k, s и flag. Переменная n предназначена для хранения числа, для которого нужно найти простые делители. Переменные i, j и k используются для проверки делимости числа на различные числа от 2 до n. Переменная s служит для подсчета суммы простых делителей.
- Выводится запрос на ввод числа n.
- Выводится сообщение
Простые делители:перед началом цикла. - Если n равно 1, то устанавливаются значения k=0 и s=0, так как в этом случае у числа нет простых делителей.
- Иначе начинается цикл, в котором для каждого числа i от 2 до n выполняется следующая последовательность действий:
- Проверяется условие ii<=n. Если оно выполняется, то начинается внутренний цикл while (jj<=i)and flag до тех пор, пока i делится на j без остатка.
- Если внутренний цикл завершается с установленной флаговой переменной Flag, то число i является простым и выполняется следующая последовательность действий:
- Увеличивается значение счетчика k на 1.
- К сумме s добавляется число i.
- Выводится число i с пробелом.
- Значение i увеличивается на 1.
- Если внутренний цикл завершается, не установив флаг, то число i не является простым, и значение i увеличивается на 1.
- После завершения внешнего цикла выводится сообщение
Количество простых делителей=k их сумма=s. - Конец программы.