Я написал Java-программу, которая находит длину цепочки чисел, используя последовательность коллатца. Последовательность Коллатца: если число четное, разделите его на два, если нечетное, умножьте на 3 и прибавьте единицу. Последовательность заканчивается, когда число достигает 1. Дополнительная информация о последовательности Коллатца. Моя программа находит длину цепочки чисел от 1 до 1 миллиона, но останавливается на 113382. Никакого сообщения об ошибке не выводится, программа просто перестает печатать числа.
*edit: Я проверил, и оказалось, что когда программа находится на 113383, цепочка сходится к отрицательным значениям. Кто-нибудь может это объяснить?
Я включил полный код, так как он очень короткий.
public static void main(String[] args) {
int max =0, maxChain=0;
for(int i = 2; i <1000000; i++ )
{
int c =i;
int counter = 0;
while(c != 1)
{
if(c%2 ==0) c/=2;
else c= 3*c+1;
counter++;
}
if(counter > maxChain)
{
maxChain =counter;
max = i;
}
System.out.println(i);
}
System.out.println(max +" has a chain length of " +maxChain);
}
while
цикл - person Baby   schedule 27.01.2014while
, вы увидите, что он не зависает, он никогда не останавливается. - person ChiefTwoPencils   schedule 27.01.2014