2

そのため、「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");
4

2 に答える 2

4

この予想は、自然数 (つまり、正の整数 1、2、3、...) に対してのみ成り立ちます。0 および負の数に拡張する場合は、他の式を使用する必要があります。https://en.wikipedia.org/wiki/Collat ​​z_conjecture の「より大きなドメインへの拡張」を確認してください。

于 2016-01-10T05:18:06.273 に答える