Работа 3.6 Упр.20 ГДЗ Семакин 10 класс (Информатика)
Рассмотрим вариант решения задания из учебника Семакин, Хеннер, Шеина 10 класс, Бином: 20. Сформировать массив простых множителей заданного числа. *Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания. 10 semakin10 pract/3-6/20 98
Нужно сформировать массив простых множителей числа. Для этого используем проверку числа на простоту и рекурсивное разложение на множители.
Сначала определим функцию Prstoe(N), которая возвращает True, если число $$N$$ простое, и False в противном случае. Число считается простым, если оно не делится ни на одно число от $$2$$ до $$N-1$$.
Затем процедура Find(N) перебирает делители числа $$N$$ от $$2$$ до $$N$$. Если $$I$$ делит $$N$$ и $$I$$ — простое число, то:
- увеличивается счётчик элементов массива;
- в массив A записывается найденный простой множитель;
- если $$N \div I = 1$$, то разложение закончено;
- иначе вызывается Find(N div I) для дальнейшего разложения частного.
В основной программе после вызова Find(N) выводятся все найденные простые множители.
var A: array[1..100] of Integer;
F: Boolean;
C, N: Integer;function Prstoe(N: Integer): Boolean;
var I: Integer;
B: Boolean;
begin
B := True;
for I := 2 to N — 1 do
if N mod I = 0 then B := False;
Prstoe := B;
end;procedure Find(N: Integer);
var I: Integer;
begin
for I := 2 to N do
if (N mod I = 0) and Prstoe(I) then
begin
Inc(C);
A[C] := I;
if N div I = 1 then
F := True
else
Find(N div I);
if F then Exit;
end;
end;begin
C := 0;
ReadLn(N);
Find(N);
N := 0;
repeat
Inc(N);
WriteLn(A[N]);
until A[N + 1] = 0;
ReadLn;
end.
Таким образом, программа последовательно находит все простые множители заданного числа и записывает их в массив A.