コラッツ予想を拡張する

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

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

#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++;
		}
	}
}

コメント

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