Наибольший общий делитель (нод) двух или нескольких чисел – это наибольшее число, на которое делятся все заданные числа. напишите программу, которая вычисляет нод двух чисел. используйте функцию. паскаль abc
Function nod(a, b: integer): integer; var i, c: integer; begin if a > b then c := a else c := b; for i := c downto 1 do if ((a mod i) = 0) and ((b mod i) = 0) then begin nod := i; break; end; end; var a, b: integer; begin Write('Введите два числа '); Readln(a, b); write('НОД чисел ', a, ' и ', b, ' равен '); if (a = 0) or (b = 0) then write('0') else write(nod(a, b)); end.
Для этого нужно в цикле пробежаться по элементам mass[i] и элементам mass[30 - i], тоесть чтобы не запоминать суму элементов достаточно её сравнить с сумой каких либо других пар (в нашом случае начало масива мы сравниваем с концом). Далее создадим переменную, по каторой мы будем определять индекс элемента сума которого из соседним элементом являлась самой большой. Просто для проверки запускается 2 цикла в которых будет индекс инкрементироваться, Не важно в конце или в начале этот элемент. В цикле где есть этот элемент делаем проверку, найшли ли мы нужный элемент, если да, то записуем значение индекса в переменную, далее записуем проверку, на равенство индекса и переменной, что не даст нам изменить значение нужного индекса до тех пор, пока мы не найдем нужный, а индекс декрементируем, он все равно будет не изменен, по скольку в начале цыкла мы его увеличиваем на 1. Примерно все! C++ . . . int main { int mass[30]; int i,counter, j; for(i = 0,i<30;i++) {cout<<"Your mass: "<<mass[i] = rand%100<<endl; // делаем заполнение масива случайными числами от 0 до 100 } //делаем собственно проверку
for(i=0;i<30;i++) { for(j=0;j<30;j++) { if (mass[i]+mass[i+1]<mass[30-j]+mass[30-j-1]){ counter=j; j--; } else {counter = i; i--; } } cout<<"Your max element : "<<mass[counter]; } getch(); return 0;
var
i, c: integer;
begin
if a > b then c := a else c := b;
for i := c downto 1 do
if ((a mod i) = 0) and ((b mod i) = 0) then begin nod := i; break; end;
end;
var
a, b: integer;
begin
Write('Введите два числа ');
Readln(a, b);
write('НОД чисел ', a, ' и ', b, ' равен ');
if (a = 0) or (b = 0) then write('0') else write(nod(a, b));
end.