Loading web-font TeX/Main/Regular

コラッツ予想を拡張する

前回の記事で触れたコラッツ予想を負の数を扱えるよう拡張する。

負の数でやろうとすると循環してしまい無限ループとなるので上限繰り返し数を設けた。上限繰り返し数は

1
#define MAX 10

で定めている。たとえばこのプログラムに-5を代入した場合

\begin{align} -5 \to -14 \to -7 \to -20 \to -10 \to -5 \to -14 \to -7 \to -20 \to -10 \to -5 \end{align}

が出力される。先頭の数字は初期値である。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<stdio.h>
#define MAX 10
 
int main(void) {
    long long int num;
    printf("数値を入力してEnterボタンを押してください\n");
 
    scanf_s("%lld", &num);
 
    printf("num=%lld\n", num);
    int i = 1;
    while (1) {
        if ((num % 2 == 1) || (num % 2 == -1)) {
            num = (num * 3) + 1;
        }else {
            num = num / 2;
        }
        printf("%lld \n", num);
        if ((num == 1)|| (num == -1)||(i==MAX)) {
            break;
        }
        else {
            i++;
        }
    }
}

コメント

タイトルとURLをコピーしました