Страницы: 1
RSS
Проверка гипотезы Коллатца, Как написать макрос для проверки гипотезы Коллатца
 
Добрый день, уважаемые форумчане! Гипотеза Коллатца описывается следующим образом, берём любое натуральное число n, если оно чётное — делим его на 2, а если нечётное — умножаем на 3 и прибавляем 1. Над полученным числом выполняем те же самые действия, и так далее. Гипотеза Коллатца заключается в том, что какое бы начальное число n мы ни взяли, рано или поздно мы получим единицу. Как при помощи написать макрос с циклом, чтобы над любым заданным числом макрос выполнял проверку гипотезы Коллатца, то есть делил на 2 если оно четное, а если нечетное - умножал на 3 и прибавлял 1, и так далее пока результат не становился 1.
 
Код
Sub qqq()
    Dim n
    Randomize
    n = Int(Rnd * 10000)
    Do
        If n Mod 2 = 0 Then
            n = n / 2
        Else
            n = n * 3 + 1
        End If
        DoEvents
        i = i + 1
    Loop Until n = 1
End Sub
 
Код
Sub jjj()
    lNum& = 14
    While lNum > 1
        If lNum Mod 2 = 0 Then
            lNum = lNum / 2
        Else
            lNum = lNum * 3 + 1
        End If
        Debug.Print lNum
    Wend
End Sub

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
RAN, спасибо! Но вставил Ваш макрос в модуль и запустил, к сожалению ничего не происходит.
Изменено: eska - 09.01.2016 11:03:10
 
Как-то так
Код
Sub tt()
Dim I As Long, Start As Long
Start = CLng(InputBox("Введите начальное число"))
If Start = 0 Then
    MsgBox "Данное число не может быть принято для проверки"
    Exit Sub
End If
While Start <> 1
    If Application.WorksheetFunction.IsEven(Start) Then Start = Start / 2 Else Start = Start * 3 + 1
    I = I + 1
Wend
MsgBox "Результат достигнут на " & I & " цикле"
End Sub



 
МВТ, спасибо большое!!! Работает!
 
JayBhagavan, спасибо! Но когда вставил Ваш макрос в модуль и запустил его, ничего не произошло.
 
Цитата
eska написал:
Но когда вставил Ваш макрос в модуль и запустил его, ничего не произошло.
Все произошло.
Но макрос МВТ,  выводит результат в MsgBox, макрос JayBhagavan в окно immediate, а мой вообще никуда.  :)
 
Цитата
RAN написал: а мой вообще никуда.
Ибо нефиг: макрос суть вещь самоценная и самодостаточная  :D
 
Котяру незаслуженно лишили спасибы ((
 
Просили что?
Цитата
написать макрос с циклом, чтобы над любым заданным числом макрос выполнял проверку гипотезы Коллатца
Кто скажет, что мой макрос это не выполняет, "пусть первым бросит в меня камень"  :)
Страницы: 1
Читают тему
Наверх