Гипотеза Коллатца для каждого числа, которое находится между двумя данными числами - PullRequest
0 голосов
/ 23 января 2020
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>();

и если я использую его, как я могу разделить каждое число в массиве, так что я нашел числа между двумя числами, но как я могу взять каждое число и сделать гипотезу Коллатца java, пожалуйста, мне нужна помощь быстро

1 Ответ

0 голосов
/ 23 января 2020

Гипотеза Коллатца проста n = n/2 if n%2 == 0 и n = 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]

...