ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 76218
УсловиеСоставить программу, печатающую разложение на простые
множители заданного натурального числа
n > 0
(другими словами, требуется печатать только простые числа
и произведение напечатанных чисел должно быть равно n;
если
n = 1, печатать ничего не надо).
РешениеВариант 1. k := n; {инвариант: произведение напечатанных чисел и k равно n, напечатаны только простые числа} while not (k = 1) do begin | l := 2; | {инвариант: k не имеет делителей в интервале (1,l)} | while k mod l <> 0 do begin | | l := l + 1; | end; | {l - наименьший делитель k, больший 1, следовательно, | простой} | writeln (l); | k:=k div l; end;Вариант 2. k := n; l := 2; {произведение k и напечатанных чисел равно n; напечатанные числа просты; k не имеет делителей, меньших l} while not (k = 1) do begin | if k mod l = 0 then begin | | {k делится на l и не имеет делителей, | | меньших l, значит, l просто} | | k := k div l; | | writeln (l); | end else begin | | { k не делится на l } | | l := l+1; | end; end; Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|
![]() |
Проект осуществляется при поддержке