java - 我的 "Collatz conjecture"有什么问题吗?

标签 java collatz

所以,我只是想创建一个循环来运行“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");

最佳答案

该猜想仅适用于自然数(即正整数 1、2、3、...)。如果你想将它扩展到 0 和负数,你将不得不使用其他一些公式。查看 https://en.wikipedia.org/wiki/Collatz_conjecture 上的“扩展至更大的域” .

关于java - 我的 "Collatz conjecture"有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702134/

相关文章:

java - 为什么在根据 stackoverflow 帖子(嵌入式)使用修复后,我现在收到无法解析方法长度错误?

java - 如何捕获 JFrame/Swing 中的所有鼠标事件?

c - 为什么代码会抛出段错误?

java - 如何添加数组中的数字以便输出高分

java - 无法找到与 ANT (mac) 关联的文件

common-lisp - 将列表理解转换为 Common Lisp 循环

algorithm - 最长的 Collat​​z 序列

python - 使用 Python 实现 collat​​z 函数

python - R 中的 Collat​​z 猜想

java - java Datagram Socket处理数据的速度不够快