Основы программирования на С++ для начинающих

Задача: гипотеза Коллатца

Гипотеза Коллатца – это одна из нерешённых проблем в математике с 1937 года (Гипотеза Коллатца, Collatz conjecture), которую математики не могут ни доказать, ни опровергнуть. Гипотеза состоит в том, для любого натурального числа n>1 последовательное применение функции:

– приведёт к числовому ряду, который, в конечном итоге (рано или поздно) приведёт к числу 1 (то есть, на каждом шаге преобразований для чётных значений следующим шагом вычисляется n/2, а для нечетных – 3n+1). Например, для n=3 это будет ряд преобразований: 3,10,5,16,8,4,2,1. Для некоторых n эта последовательность чисел будет весьма короткой, но для некоторых – очень длинной…

Наше задание не в том, чтобы решить задачу, которую все математики мира не могут решить 80 лет, а в том, чтобы для любого n построить цепочку числовых для такого преобразования (то, что математики   называют: чи́сла-гра́дины).

Конечно, как и раньше, одним из критериев качества решения будет: код должен быть записан как можно короче.

Решение.

Как это выполняется:

задача и решение, гипотеза коллатца, с++, практика программирования

2 thoughts on “Задача: гипотеза Коллатца

  1. #include
    using namespace std;

    int main() {
    setlocale(LC_ALL, “rus”);

    long all = 1;

    cin >> all;

    for (;;) {

    if (all % 2 == 0) {
    all /= 2;
    cout << all << endl;
    }
    else {
    all = (all * 3) + 1;
    cout << all << endl;
    }
    if (all == 1) {
    break;
    }
    }

    system("pause");
    return 0;
    }

  2. Николай, типа у тебя короче?
    Ладно про проверку чётности и деление на 2 делением, х с ним.
    Но ты бы хоть вывод не дублировал.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *