Напишите рекурсивную функцию, которая раскладывает число ** простые сомножители. Пример:...

0 голосов
789 просмотров

Напишите рекурсивную функцию, которая раскладывает число на простые сомножители.
Пример:
Введите натуральное число: 378
378 = 2*3*3*3*7


Информатика (76 баллов) | 789 просмотров
0

Язык написания - pascal

0

Занятно: факторизация чисел - одна из не самых простых вычислительных задач

0

А еще - классическая функция в данном случае не может быть рекурсивной, потому что она должна и возвращать значение, и одновременно менять значение своего параметра, а менять несколько значений - это уже свойство не функции, а процедуры.

0

Даю Вам задание слово в слово, как написано у меня. От себя ни чего не добавляю

0

А к Вам претензий нет. Наберите на интернет-поисковике запрос "алгоритм разложения числа на простые множители" - и Вы поймете, какую головную боль Вам задали.

0

Помочь сможете?

0

Увы, нет, потому что не понимаю, как тут сделать рекурсивную ФУНКЦИЮ. Она тут никаким боком не нужна.

0

Эх, у меня та же проблема, без рекурсии сделать могу, а с ней уже проблемы =(

Дан 1 ответ
0 голосов
Правильный ответ

Вариант без рекурсии - как просил позже

function factorization ( numeric: integer ): integer;
var d: integer;
begin
write(numeric, ' = 1');
d := 2;
while numeric > 1 do
begin
if numeric mod d = 0 then
begin
write (' * ', d);
numeric := numeric div d;
end
else inc(d);
end;
end;
var x: integer;
begin
write('Введите число: ');
readln(x);
factorization(x);
end.

(2.3k баллов)