Алгоритм разбиения числа на простые слагаемые - 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

Объяснение кода листинга программы

  1. Условие: проверка, если значение переменной cnt меньше 10.
  2. Действие: если условие истинно, цикл продолжает выполнение для переменной i.

Оцени полезность:

5   голосов , оценка 4.6 из 5
Похожие ответы