コラッツ予想は初めに任意の正の整数\(n\)を定めこれを
\(n\)が偶数の時
\begin{align}
n=\frac{n}{2}
\end{align}
\(n\) が奇数の場合、
\begin{align}
n=3n+1
\end{align}
のように繰り返し更新していくと最終的に\(1\)となるという予想である。
unsigned long long int型を使って巨大な数も試せるようにした。
例えば\(3\)であれば
\begin{align}
3 \to 10 \to 5 \to16 \to 8 \to 4 \to 2 \to 1
\end{align}
となる。
#include<stdio.h>
int main(void){
unsigned long long int num;
printf("数値を入力してEnterボタンを押してください\n");
scanf_s("%lld", &num);
printf("num=%lld\n",num);
while (1) {
if (num % 2 == 1) {
num = (num * 3) + 1;
}else {
num = num / 2;
}
printf("%lld \n", num);
if (num == 1) {
break;
}
}
}
コメント
[…] 前回の記事で触れたコラッツ予想を負の数を扱えるよう拡張する。 […]