首页 > 解决方案 > 两个给定数字之间的每个数字的 Collat​​z 猜想

问题描述

num = Integer.parseInt(tf1.getText());
entered = Integer.parseInt(tf1.getText());
num2 = Integer.parseInt(tf2.getText());
entered2 = Integer.parseInt(tf2.getText());

for (i =(int) num; i<= num2 ; i++){ 

    for (j=0 ; j >= i ; j++) {} 

    System.out.println(i);
}

我必须使用数组列表吗?ArrayList<Integer> lists = new ArrayList<Integer>();

如果我使用它,我如何分隔数组列表中的每个数字,所以我找到了两个数字之间的数字,但是我如何获取每个数字并做 collat​​z 猜想 java,请我快速需要帮助

标签: javaarraylistcollatz

解决方案


collat​​z 猜想很简单n = n/2 if n%2 == 0n = 3*n + 1 if n%2 == 1并且您一直在进行这些计算,直到n = 1. 基于此,您可以像这样编写函数:

public static List<Integer> calculateConjecture(int number) {
    List<Integer> values = new ArrayList<>();

    while (number != 1) {
        if (number % 2 == 0) {
            number = number / 2;
        } else {
            number = 3 * number + 1;
        }
        values.add(number);
    }

    return values;
}

public static void main(String[] args) {
    int inferiorLimit = 11;
    int superiorLimit = 15;

    for (int i = inferiorLimit; i <= superiorLimit; i++) {
        System.out.println(calculateConjecture(i));
    }

}

ArrayList将values保存当前数字之间的数字序列[inferiorLimit,superiorLimit]


推荐阅读