Я написал программу java, которая находит длину цепочки числа, используя последовательность collatz. Последовательность collatz: если число четное, разделите его на два, если нечетно, умножьте на 3 и добавьте один. Последовательность заканчивается, когда число достигает 1. Additional Info on Collatz Sequence. Моя программа находит длину цепочки чисел от 1 до 1 миллиона, но она останавливается на 113382. Не отображается сообщение об ошибке, программа просто прекращает печатать номера.Почему программа java замерзает на 113882?
* 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' – Baby
Если вы поместите оператор вывода в' while', вы увидите, что он не замерзает, он никогда не останавливается. – ChiefTwoPencils
@BobbyDigital тогда, если это так, почему он сходится к отрицательным значениям? –