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