Алгоритм разбиения числа на простые слагаемые - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д