◆広島県 清川 育男 さんからの解答。
十進ベーシックでプログラムを組んで実験してみました。
すべての問題で「1」になるようです。
問題2の「76」は1562回の操作で1となるため「1000桁モード」で走らせてください。
REM 『これも未解決問題? Part2』 FOR Q=1 TO 10 PRINT "問題";Q FOR I=10 TO 99 LET Z=0 LET X=I 10 ON Q GOSUB 100,200,300,400,500,600,700,800,900,1000 IF X<2 THEN PRINT USING "###":I; PRINT USING "#####":Z; PRINT "回の操作で"; PRINT USING "##":X; PRINT "となる。" GOTO 20 END IF GOTO 10 20 NEXT I PRINT NEXT Q STOP 100 REM 操作(問題1) LET Z=Z+1 LET Y=REMAINDER(X,3) IF Y=1 THEN LET X=X*11+1 RETURN END IF IF Y=2 THEN LET X=X+1 RETURN END IF LET X=X/3 RETURN 200 REM 操作(問題2) LET Z=Z+1 LET Y=REMAINDER(X,3) IF Y=1 THEN LET X=X*23+1 RETURN END IF IF Y=2 THEN LET X=X+1 RETURN END IF LET X=X/3 RETURN 300 REM 操作(問題3) LET Z=Z+1 LET Y=REMAINDER(X,5) IF Y=1 THEN LET X=X*9+1 RETURN END IF IF Y=2 THEN LET X=X*27+1 RETURN END IF IF Y=3 THEN LET X=X*3+1 RETURN END IF IF Y=4 THEN LET X=X+1 RETURN END IF LET X=X/5 RETURN 400 REM 操作(問題4) LET Z=Z+1 LET Y=REMAINDER(X,3) IF Y=1 THEN LET X=X*7+2 RETURN END IF IF Y=2 THEN LET X=X+1 RETURN END IF LET X=X/3 RETURN 500 REM 操作(問題5) LET Z=Z+1 LET Y=REMAINDER(X,3) IF Y=1 THEN LET X=X*13+2 RETURN END IF IF Y=2 THEN LET X=X+1 RETURN END IF LET X=X/3 RETURN 600 REM 操作(問題6) LET Z=Z+1 LET Y=REMAINDER(X,3) IF Y=1 THEN LET X=X*19+2 RETURN END IF IF Y=2 THEN LET X=X+1 RETURN END IF LET X=X/3 RETURN 700 REM 操作(問題7) LET Z=Z+1 LET Y=REMAINDER(X,5) IF Y=1 THEN LET X=X*4+1 RETURN END IF IF Y=2 THEN LET X=X*2+1 RETURN END IF IF Y=3 THEN LET X=X*8+1 RETURN END IF IF Y=4 THEN LET X=X*16+1 RETURN END IF LET X=X/5 RETURN 800 REM 操作(問題8) LET Z=Z+1 LET Y=REMAINDER(X,5) IF Y=1 THEN LET X=X*4+1 RETURN END IF IF Y=2 THEN LET X=X*2+1 RETURN END IF IF Y=3 THEN LET X=X*128+1 RETURN END IF IF Y=4 THEN LET X=X+1 RETURN END IF LET X=X/5 RETURN 900 REM 操作(問題9) LET Z=Z+1 LET Y=REMAINDER(X,5) IF Y=1 THEN LET X=X*4+1 RETURN END IF IF Y=2 THEN LET X=X*32+1 RETURN END IF IF Y=3 THEN LET X=X*8+1 RETURN END IF IF Y=4 THEN LET X=X+1 RETURN END IF LET X=X/5 RETURN 1000 REM 操作(問題10) LET Z=Z+1 LET Y=REMAINDER(X,5) IF Y=1 THEN LET X=X*64+1 RETURN END IF IF Y=2 THEN LET X=X*2+1 RETURN END IF IF Y=3 THEN LET X=X*8+1 RETURN END IF IF Y=4 THEN LET X=X+1 RETURN END IF LET X=X/5 RETURN END
◆広島県 清川 育男 さんからの解答。
【おまけ】
1,000,000までの自然数に対して予想したことが正しい。
REM 『これも未解決問題? Part2』おまけ FOR Q=1 TO 3 PRINT "問題";Q FOR I=100 TO 1000000 LET X=I 10 ON Q GOSUB 100,200,300 IF X<I THEN GOTO 20 END IF GOTO 10 20 NEXT I PRINT "OK" PRINT NEXT Q STOP 100 REM 操作(問題1) LET Y=REMAINDER(X,3) IF Y=1 THEN LET X=X*11+1 RETURN END IF IF Y=2 THEN LET X=X+1 RETURN END IF LET X=X/3 RETURN 200 REM 操作(問題2) LET Y=REMAINDER(X,3) IF Y=1 THEN LET X=X*23+1 RETURN END IF IF Y=2 THEN LET X=X+1 RETURN END IF LET X=X/3 RETURN 300 REM 操作(問題3) LET Y=REMAINDER(X,5) IF Y=1 THEN LET X=X*9+1 RETURN END IF IF Y=2 THEN LET X=X*27+1 RETURN END IF IF Y=3 THEN LET X=X*3+1 RETURN END IF IF Y=4 THEN LET X=X+1 RETURN END IF LET X=X/5 RETURN END