Используя алгоритм Евклида, найти наибольший общий делитель (НОД) - VB
Формулировка задачи:
Дорогие программисты! Не могу справиться с задачками! Буду благодарна за помощь или подсказку!
1. Даны натуральные числа n, m.
1.1. Используя алгоритм Евклида, найти наибольший общий делитель (НОД) n и m.
1.2. Найдите наибольший общий делитель (НОД) n и m любым другим способом.
1.3. Какой из алгоритмов вычисления НОД более эффективны и почему (ответ добавить в код как комментарий).
1.2: моя версия решения работает
1.3 - сама напишу.А вот с Евклидом никак не подружусь
Рекомендации от преподавателя:
Наибольший общий делитель чисел 9 и 6 - это такой число 3, так как и 9 и 6 делятся на 3 и это наибольшее из их общих делителей.
Общими делителями чисел 6 и 12 являются числа 1,2,3,4,6, а НОД(12, 18)=6, т.е. наибольший из общих делителей.
Алгоритм Евклида нахождения НОД основан на следующих свойствах этой величины. Пусть m и n - одновременно не равные 0 целые неотрицательные числа и пусть m>=n. Тогда,
если n=0, то НОД (n,m)=m;
а если n<>0, то для чисел m,n,r, где r - остаток от деления m на n, выполняется равенство
НОД (m,n) = НОД (n,r).
Например, НОД (15,6) = НОД (6,3) = НОД (3,0) = 3
Моя версия такова:
Задача 2
Для данного действительного числа a, найти такое наименьшее n, что 1 + 1/2 + … +1/n > a.
Рекомендации
Суть задания в том, что нужно вычислять сумму 1 + 1/2 + … +1/n до тех пор, пока она меньше или равна a. Выходные данные - не значение суммы, а значение перменной n, при котором сумма 1 + 1/2 + … +1/n стала больше a.
Для решения задачи удобно использовать цикл с пост-условием.
с этим заданием совсем плохо справилась... не пойму как определить n, посчитать сумму могоу... ну вот мой вариант:
Задача 3:
Вычислить сумму с заданной точностью e(e вводится с клавиатуры). Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше, чем e.
С этим совсем туго....
Заранее благодарна!!!
Решение задачи: «Используя алгоритм Евклида, найти наибольший общий делитель (НОД)»
textual
Листинг программы
Private Sub Command1_Click() Dim m, n, r m = CInt(Text1) n = CInt(Text2) r = 1 If m >= n And n <> 0 Then Do While r <> 0 r = (m Mod n) If r = 0 Then nod = n GoTo line1 Else m = n n = r End If Loop Else Do While r <> 0 r = n Mod m If r = 0 Then nod = m Else n = m And m = r End If Loop End If line1: Label1 = "НОД:" & nod End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д