Задача: даны два числа, найти их наибольший общий делитель.

Презентация:



Advertisements
Похожие презентации
Задача: даны два числа, найти их наибольший общий делитель.
Advertisements

Задача: определить является ли простым заданное число.
АЛГОРИТМ ЕВКЛИДА. Алгоритм Евклида - это алгоритм нахождения наибольшего общего делителя (НОД) двух целых неотрицательных чисел. Евклид ( до. н.
Тема:Программирование цикла на Паскале На дом: §39-40.
1 Программирование на языке Паскаль Максимальный элемент массива.
5.Дана матрица А и вектор Х соответствующих размерностей. Нечетные строки матрицы заменить элементами вектора Х. Результаты работы: n=4 m=
Алгоритм Евклида. Наибольший общий делитель Требуется составить программу определения наибольшего общего делителя ( НОД ) двух натуральных чисел. НОД.
Чтобы найти максимальный элемент в массиве и потом производить с ним какие-либо действия, нужно узнать его номер (индекс - I). Для этого вначале будем.
Проверка пройденного материала. Исправьте ошибки в решении задачи: заполнить и вывести массив W(3) вещественных чисел Program Mass; Var b:Array[1..10]
Циклические программы Информатика и ИКТ 9 класс Гимназия 1 г. Новокуйбышевска Учитель информатики: Красакова О.Н.
1 Программирование на языке Паскаль Тема 2. Максимальный элемент массива.
Массивы Урок в 9 классе. Домашняя задача А В = НОД(А,В) НОК (А,В), выражаем из формулы НОК(А,В), получаем В программу Евклид добавляем строчку с этой.
PROGRAM example1; const m=100; var a : ARRAY [1.. m] of INTEGER; i,k,n,q : INTEGER; BEGIN readln (n); randomize; WRITELN('Полученный массив:' ); FOR i.
3. Дана прямоугольная матрица, элементами которой являются целые числа. Поменять местами ее строки следующим образом: первую строку с последней, вторую.
Тема: Нахождение минимального и максимального элемента в массиве.
Решение задач с использованием массивов
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Чтобы найти максимальный элемент в массиве и потом производить с ним какие-либо действия, нужно узнать его номер (индекс - I).Чтобы найти максимальный.
АЛГОРИТМ ЕВКЛИДА (нахождение наибольшего общего делителя (НОД) двух натуральных чисел)
Одномерные массивы Решение задач. Табличный способ организации данных Одномерные и двумерные массивы.
Транксрипт:

Задача: даны два числа, найти их наибольший общий делитель

Вычисление НОД НОД = наибольший общий делитель двух натуральных чисел – это наибольшее число, на которое оба исходных числа делятся без остатка. НОД(a, b)= НОД(a-b, b)= НОД(a, b-a) Заменяем большее из двух чисел разностью большего и меньшего до тех пор, пока они не станут равны. Это и есть НОД. НОД (18, 45) = НОД (18, 45-18) = НОД (18, 27)= НОД (18, 9) = =НОД(9,9)=9 Пример :

Алгоритм Евклида: Ввести N,M Пока NM повторять Если N>M то N=N-M иначе M=N-M Конец цикла Вывести М НАЧАЛО ввод: N,M N=N-M данет M N конец вывод: M M=M-N MN

program Evklid; var m, n: integer; begin write(введите 2 числа'); read(m,n); while mn do begin if m>n then m:=m-n else n:=n-m; end; write (НОД=',m); end.

Исполним алгоритм для M=18, N=12 нет66 612(да)да126 да1218 MN NM 1812(нет) НАЧАЛО ввод: N,M N=N-M данет M N конец вывод: M M=M-N MN На экране: М=6

33. Дано n целых чисел. Найти среди них пару чисел, для которых наибольший общий делитель имеет максимальное значение. План решения задачи: 1.Заполнить массив А, ввести с клавиатуры количество чисел в массиве – k 2.Найти НОДы для соседних элементов, обозначим их m, поместить их в массив В. 3.Найти максимальное среди элементов массива В max. 4.Найти два соседних элемента массива A, для которых соответствующий элемент в В = max

Заполняем массив А: program a1; var i,m,n,k,max:integer; a,b:array[1..10] of integer; begin read(k); {количество чисел в массиве} for i:=1 to k do begin a[i]:=random(100); write(a[i]:3)end;

Находим НОДы для двух соседних элементов for i:=1 to k-1 do begin { до предпоследнего элемента } n:=a[i]; m:=a[i+1]; { вводим обозначения элементов} while mn do begin if m>n then m:=m-n else n:=n-m; end; b[i]:=m; { помещаем найденный НОД в массив В} end; writeln; for i:=1 to k-1 do write(b[i]:3); { печатаем массив В} Часть программы из предыдущей задачи

Находим максимальный элемент в массиве В max:=b[1]; for i:=1 to k-1 do if b[i]>max then max:=b[i]; writeln; write('максимальный из НОДов двух соседних элементов=', max)

Найдем два соседних элемента массива A (a[i] и a[i+1]), для которых соответствующий элемент в В = max For i:=1 to k-1 do If b[i]=max then writeln (a[,i,]=,a[i],a[,i+1,]=,a[i+1]) end. {Конец всей программы}

Результаты работы программы: 9 { возьмем 9 чисел – это к} { это числа их 9} {первое число 6 – это НОД для чисел 66 и 18} максимальный из НОДов двух соседних элементов=6 { это максимальное из 2-ой строки} a[1]=66 a[2]=18 a[6]=42 a[7]=48 a[7]=48 a[8]=54 a[8]=54 a[9]=96 Пары элементов с максимальными НОДами

Задача: даны 2 числа найти наименьшее общее кратное. Наименьшее кратное двух чисел M и N следует понимать как минимальное число делящееся без остатка одновременно на M и на N. Для решения задачи нам помогут следующие закономерности: 1. Произведение двух чисел M и N будет кратно обоим числам. 2. Если одно из чисел равно нулю, то наименьшее общее кратное найти нельзя, т.к. на ноль делить нельзя.

План решения задачи 1. Проверим не равно ли одно из чисел нулю. Если равно, то решения нет. 2. Примем произведение чисел за наименьшее общее кратное. 3. В цикле от произведения чисел до 1 проверяем равенство остатка от деления ключа цикла на первое число и на второе. Если остатки равны нулю – принимаем данный ключ цикла за наименьшее кратное и продолжаем цикл.

program NOK; var n,m:integer; i,k:integer; begin write('введите N: '); readln(n); write('введите M: '); readln(m); if (m0) and (n0) then begin k:=n*m; i:=k; while i>0 do begin if (i mod n=0) and (i mod m=0) then k:=i; i:=i-1; end; writeln('НОК ',m,' и ',n,' равно ',k) end else writeln(на ноль делить нельзя); end.

34. Дано n целых чисел. Найти среди них пару чисел, для которых наименьшее общее кратное имеет наименьшее значение. План решения задачи: 1.Заполнить массив А случайными числами (всего s чисел) 2.Найдем НОК (k) для двух соседних чисел в массиве А. Поместим все найденные НОКи в массив В. 3.Найдем наименьшее в массиве В (min) 4.Найти два соседних элемента массива A, для которых соответствующий элемент в В =min

program a34; var n,m, min,s,j,i,k:integer; a,b:array[1..10] of integer; begin read (s); {количество чисел в массиве s} for i:=1 to s do begin a[i]:=random(100); write(a[i]:3)end; for j:=1 to s-1 do begin n:=a[j]; m:=a[j+1]; { вводим обозначения элементов} if (m0) and (n0) then begin k:=n*m; i:=k; while i>0 do begin if (i mod n=0) and (i mod m=0) then k:=i; i:=i-1; end; b[j]:=k; {помещаем НОД в массив В} end else b[j]:=0; {если есть 0 то в В помещаем 0} end; writeln; for j:=1 to s-1 do write(b[j]:5); { печатаем массив В} writeln; { находим минимальное в массиве В} min:=b[1]; for j:=1 to s-1 do if b[j]