Что не так с моей "гипотезой Коллатца"?

Итак, я просто пытался создать цикл для запуска формулы "3n+1", и когда я ввел отрицательное число, я застрял в бесконечном цикле с остатками 0 и -1.

Это правильно или в моем коде чего-то не хватает?

Вот мой код:

    Scanner scan = new Scanner(System.in);
    number = 0;
    method = 0;
int counter= 0;

if(scan.hasNextInt()){
     number = scan.nextInt();
  int original = number;
 while(number!=1){
      method = number%2;
     if(method==0){
    number = number/2;
 }else number = number*3+1;
 counter +=1;
  System.out.println(number);
  System.out.println("the remainder was "+method);
 }


 System.out.println("The original number was "+original);
 System.out.println("it took " + counter+ " times to reach 1.");



}else System.out.println("please enter a number");

2 ответа

Решение

Эта гипотеза верна только для натуральных чисел (т.е. натуральных чисел 1, 2, 3,...). Если вы хотите расширить его до 0 и отрицательных чисел, вам придется использовать другую формулу. Проверьте "Расширения для больших доменов" на https://en.wikipedia.org/wiki/Collatz_conjecture.

Образуется несколько петель. Дальнейшее гугление покажет вам, что образовалось 3-4 (гугл для точного подсчета) петель. И тогда остальные отрицательные числа также должны вернуться к $-1$ или, другими словами, к «чему-то аналогичному» положительному случаю. Итак, вы застряли в первой петле! РЖУ НЕ МОГУ

Я думаю, что его следует рассматривать расширенным на группу целых чисел, чтобы была надежда на немедленное применение методов групповых когомологий вместо методов моноидных когомологий (которые менее изучены).

Другие вопросы по тегам