Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
lisov
Новичок
0 / 0 / 0
Регистрация: 16.03.2010
Сообщений: 11
16.03.2010, 21:33     Используя алгоритм Евклида, найти наибольший общий делитель (НОД)
  #1
Дорогие программисты! Не могу справиться с задачками! Буду благодарна за помощь или подсказку!

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)
AdAgent
Объявления
16.03.2010, 21:33
YuraAAA
Форумчанин
873 / 791 / 66
Регистрация: 25.10.2009
Сообщений: 1,960
Записей в блоге: 1
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
Форумчанин
873 / 791 / 66
Регистрация: 25.10.2009
Сообщений: 1,960
Записей в блоге: 1
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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Visual Basic Даны натуральные числа n, m. Найти НОД (n, m)
даны натуральные числа n,m. Найти НОД (n,m). Использовать программу, включающую рекурсивную процедуру вычисления НОД, основанную на соотношении НОД (n,m)= НОД (m,r), где r- остаток от деления n на m....
Visual Basic Альбина С. 25.11.2012 14:55
C++ Найти наибольший общий делитель (НОД) двух введенных натуральных чисел, используя алгоритм Евклида
Найти наибольший общий делитель (НОД) двух введенных натуральных чисел, используя алгоритм Евклида. Алгоритм Евклида: вычитаем числа меньшее до тех число и есть НОД
С++ для начинающих vitalik-botanik 28.05.2012 09:35
Visual Basic Найти наибольший общий делитель трёх чисел
Помогите пожалуйста, Дано 3 числа (любых), определить их наибольший общий делитель
Visual Basic Angpuxa 05.05.2012 13:15
C++ наибольший общий делитель (НОД) двух целых положительных чисел A и B, используя алгоритм Евклида:
Описать функцию NOD2(A, B) целого типа, находящую наибольший общий делитель (НОД) двух целых положительных чисел A и B, используя алгоритм Евклида: НОД(A, B) = НОД(B, A mod B), если B ≠ 0; НОД(A, 0)...
С++ для начинающих Ejevikka 02.03.2012 17:39
C++ Найти наибольший общий делитель (НОД), используя алгоритм Евклида
Даны целые положительные числа A и B. Найти их наибольший об-щий делитель (НОД), используя алгоритм Евклида: НОД(A, B) = НОД(B, A mod B), если B ≠ 0; НОД(A, 0) = A. Решите на С++, спасибо заранее.
С++ для начинающих Маша Болдина 19.02.2012 22:42
Visual Basic Найти наибольший общий делитель нескольких чисел
Помогите,пожалуйста! задано N натуральных чисел (N>10), найти наибольший общий делитель. Находила для двух,а для N кол-ва не получилось(
Visual Basic Ase4ka 25.05.2010 16:47
Visual Basic наибольший общий делитель. массивы
Заранее благодарен! Могли бы прислать программные коды на почтовый адрес sellexioner@yandex.ru.....на кону вся жизнь и карьера начинающего программиста 1))))Написать программу, которая вычисляет...
Visual Basic Арби 11.01.2010 22:03
Опции темы

Текущее время: 01:00. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.