Проект Эйлера Вопрос 14 (проблема Коллатца)

Следующая итерационная последовательность определена для набора натуральных чисел:

n -> n / 2 (n четное) n -> 3n + 1 (n нечетное)

Используя приведенное выше правило и начиная с 13, мы генерируем следующую последовательность:

13 40 20 10 5 16 8 4 2 1 Видно, что эта последовательность (начиная с 13 и заканчивая 1) содержит 10 терминов. Хотя это еще не доказано (проблема Коллатца), считается, что все стартовые числа заканчиваются на 1.

Какой стартовый номер, менее одного миллиона, дает самую длинную цепочку?

ПРИМЕЧАНИЕ. После запуска цепочки условия могут превышать миллион.

Я попытался написать решение для этого в C, используя метод bruteforce. Однако, похоже, что моя программа зависает при попытке вычислить 113383. Пожалуйста, посоветуйте :)

#include <stdio.h>
#define LIMIT 1000000

int iteration(int value)
{
 if(value%2==0)
  return (value/2);
 else
  return (3*value+1);
}

int count_iterations(int value)
{
 int count=1;
 //printf("%d\n", value);
 while(value!=1)
 {
  value=iteration(value);
  //printf("%d\n", value);
  count++;
 }
 return count;
}

int main()
{
 int iteration_count=0, max=0;
 int i,count;


 for (i=1; i<LIMIT; i++)
 {
  printf("Current iteration : %d\n", i);
  iteration_count=count_iterations(i);
  if (iteration_count>max)
   {
   max=iteration_count;
   count=i;
   }

 }

 //iteration_count=count_iterations(113383); 
 printf("Count = %d\ni = %d\n",max,count);

}

Ответы на вопрос(8)

Ваш ответ на вопрос