前回の記事で触れたコラッツ予想を負の数を扱えるよう拡張する。
負の数でやろうとすると循環してしまい無限ループとなるので上限繰り返し数を設けた。上限繰り返し数は
#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}
が出力される。先頭の数字は初期値である。
#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++;
}
}
}
コメント