Алгоритм разбиения числа на простые слагаемые - Pascal (80224)
Формулировка задачи:
Есть код для разложения числа на простые слагаемые. Если число большое, то количество слагаемых может быть слишком много. Как ввести ограничение на разложение до 10 слагаемых? (Внесите сразу в код, пожалуйста)
код:
var
n, cnt :longint;
a :array[1 .. 10000] of longint;
function IsPrime(x :longint) :boolean;
var p :longint;
begin
IsPrime := true;
p := 2;
while (p * p <= x) do begin
if (x mod p = 0) then
IsPrime := false;
p := p + 1;
end;
end;
procedure rec(x, last :longint);
var i :longint;
begin
if (x = 0) then begin
for i := 1 to cnt do
write(a[i], ' ');
writeln;
exit();
end;
for i := last to x do
if (IsPrime(i)) then begin
inc(cnt);
a[cnt] := i;
rec(x - i, i);
dec(cnt);
end;
end;
begin
readln(n);
rec(n, 2);
end.Решение задачи: «Алгоритм разбиения числа на простые слагаемые»
textual
Листинг программы
if cnt < 10 then // тут остается цикл по i
Объяснение кода листинга программы
- Условие: проверка, если значение переменной
cntменьше 10. - Действие: если условие истинно, цикл продолжает выполнение для переменной
i.