Форум программистов, компьютерный форум CyberForum.ru

Visual Basic

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 60, средняя оценка - 4.63
lisov
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 11
#1

Используя алгоритм Евклида, найти наибольший общий делитель (НОД) - Visual Basic

16.03.2010, 21:33. Просмотров 7700. Ответов 4
Метки нет (Все метки)

Дорогие программисты! Не могу справиться с задачками! Буду благодарна за помощь или подсказку!

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

Моя версия такова:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
m = TextBox1.Text
        n = TextBox2.Text
 
        If m >= n And n <> 0 Then
            Do While r <> 0
                r = m Mod n
                If r = 0 Then
                    nod = n
                Else
                    m = n And 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
        Label5.Text = "НОД:" & nod
Задача 2
Для данного действительного числа a, найти такое наименьшее n, что 1 + 1/2 + … +1/n > a.
Рекомендации
Суть задания в том, что нужно вычислять сумму 1 + 1/2 + … +1/n до тех пор, пока она меньше или равна a. Выходные данные - не значение суммы, а значение перменной n, при котором сумма 1 + 1/2 + … +1/n стала больше a.
Для решения задачи удобно использовать цикл с пост-условием.

с этим заданием совсем плохо справилась... не пойму как определить n, посчитать сумму могоу... ну вот мой вариант:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
er = "Ошибка ввода данных!"
 
        If IsNumeric(TextBox3.Text) = True Then
            a = TextBox3.Text
 
            res = 0
            i = 1
            Do
                res = res + 1 / i
                i = i + 1
            Loop While res <= a
            m = i + 1
            Label13.Text = m
        Else
            Label13.Text = er
        End If
Задача 3:

Вычислить сумму с заданной точностью e(e вводится с клавиатуры). Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше, чем e.

С этим совсем туго....

Заранее благодарна!!!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2010, 21:33     Используя алгоритм Евклида, найти наибольший общий делитель (НОД)
Посмотрите здесь:
Visual Basic Найти наибольший общий делитель нескольких чисел
Visual Basic Найти наибольший общий делитель трёх чисел
наибольший общий делитель. массивы Visual Basic
Найти наименьший общий знаменатель трех дробей Visual Basic
Visual Basic vb найти сумму ряда с точностью E=10^общий член которого Аn=n!/n^n
найти наибольший из делителей Visual Basic
Найти наибольший и наименьший элементы матрицы В Visual Basic
Ввести два числа А и С. - Найти произведение этих чисел, используя только операцию сложения. - Вычислить АС, используя только операцию умножения Visual Basic
Найти в каждой строке матрицы наибольший элемент Visual Basic
Найти наибольший на главной диагонали (по абсолютной величине) элемент Visual Basic
Visual Basic Массивы. Найти наибольший и наименьший элементы и поменять их местами

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
17.03.2010, 00:23     Используя алгоритм Евклида, найти наибольший общий делитель (НОД) #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
1.1 Алгоритм Эвклида. Задача сделана в VB 6.0 и полностью рабочая
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
Добавлено через 9 минут
2.Ну как бы так)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Command1_Click()
Dim A As Single, res As Single
Dim n, minN
A = Text1
n = 1
minN = 1
res = 0
Do While res <= A
res = res + 1 / n
minN = n
n = n + 1
Loop
MsgBox minN
End Sub
Добавлено через 58 секунд
Цитата Сообщение от lisov Посмотреть сообщение
Вычислить сумму с заданной точностью e(e вводится с клавиатуры). Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше, чем e.
Сумму чего ?) Какого-то натурального числа N ?)
lisov
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 11
17.03.2010, 14:17  [ТС]     Используя алгоритм Евклида, найти наибольший общий делитель (НОД) #3
YuraAAA, спасибо за ответы!!!!

А по поводу 3 задачи - там выражение не скопировалось! А я по незнанию не глянула!
пишу ещё раз:

3. Вычислить сумму (значок суммы от 0 до бесконечности 1/(4^i + 5^(i+2)) ) с заданной точностью e(e вводится с клавиатуры). Считать, что требуемая точность достигнута, если очередное слагаемое оказалось по модулю меньше, чем e.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
17.03.2010, 16:04     Используя алгоритм Евклида, найти наибольший общий делитель (НОД) #4
ааа,понятно) ну сейчас посмотрю

Добавлено через 18 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Command1_Click()
Dim y As Single, ySum As Single
Dim i, e
If IsNumeric(Text1) = False Then
MsgBox ("Vvedite 4islo!")
Exit Sub
End If
e = Text1
i = 0
y = 1 / (4 ^ 0 + 5 ^ (0 + 2))
Do While Abs(y) >= e
y = 1 / (4 ^ i + 5 ^ (0 + 2))
ySum = ySum + y
i = i + 1
Loop
MsgBox (ySum)
End Sub
Ну вот так,на сколько я понял =)
lisov
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 11
17.03.2010, 23:28  [ТС]     Используя алгоритм Евклида, найти наибольший общий делитель (НОД) #5

Спасибо большое!
Yandex
Объявления
17.03.2010, 23:28     Используя алгоритм Евклида, найти наибольший общий делитель (НОД)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru