/* t2_3.c ( PASCAL講座 sample program ) 角谷予想:   任意の自然数を初期値にして、  「偶数なら2で割る、奇数なら3倍して1を足す」 という操作を繰り返すと必ず1になるという予想 コンパイル命令は gcc t2_3.c -o t2_3 実行命令は t2_3 */ #include #include #include main() { int n,max,over; max=(INT_MAX-1)/3; /* 扱える最大の整数の1/3を max に設定 */ /* INT_MAX は PASCAL では MAXINT */ over=0; /* オーバーフロー検出のための論理変数 */ do{ printf("2 以上 %1d 以下の自然数を入力してください : \n",max); scanf("%d",&n); }while(n<2 || n>max); printf("%1d",n); while(n!=1){ if(n>max || n<0){ over=1; break;} /* オーバーフロー検出 */ if((n%2)==0) n/=2; else n=3*n+1; printf(" → %1d",n); } printf("\n"); if(over) printf("overflow occurs !!\n"); }