Помощь - Поиск - Пользователи - Календарь
Полная версия: НОД для 10 чисел
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Dummy
Дано 10 натуральных чисел. Найти их наибольший общий делитель.
Я использовала алгоритм Архимеда (так, кажется, он называется).

program nod (input, output);
var m, n, i, p, q, x, o: integer;
begin
read(p);
for i:=1 to 9 do
begin
read(q);
if p>q then begin m:=p; n:=q end
else begin m:=q; n:=p end;
while (n<>0) and (m<>0) do begin
o:=m-n; if o>=n then m:=o else
begin m:=n; n:=o end
end;
if m<>0 then x:=m else x:=n;
p:=x
end;
writeln(x)
end.


Думаю, что все написанное выше может оказаться вообще полной ерундой...
Пишу программу второй раз в жизни... Помогите,пожалуйста! И еще у меня чисто теоретический вопрос: можно в цикле for прсваивать переменной новое значение и потом пользоваться уже им (я пытаюсь так сделать со значением "p").
klem4
Прочитай правила форума ...

1. Заголовок темы должен быть информативным В противном случае тема удаляется


+ поищи по форуму, вот напрмер аглоритм Евклида : http://forum.pascal.net.ru/index.php?showt...ольший+делитель
dummy
Да, конечно, его звали Евклид...автора алгоритма вычисления НОД))...
Спасиб большое за ссылку. Но у меня не 2 числа, а 10!
Проблема, кажется, именно в части алгоритма с циклом for... Посмотрите, пжлст!
Программа работает, но совсем криво...
volvo
Dummy,
насколько я понимаю, вот так должно быть:
function nod(a,b : integer): integer;
begin
while (a > 0) and (b > 0) do
if a > b then a := a - b else b := b - a;
nod := a + b;
end;

var i, p, q: integer;
begin
read(p);
for i:=1 to 9 do begin
read(q);
p := nod(p, q);
end;
writeln(p);
end.
Guest
Спасиб огромное!!! =)
Тольк мы функции еще не проходили... А мой длинный и кривой вариант тож работал правильно, как оказалось)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.