◆広島県 清川 育男 さんからの解答。
十進ベーシックでプログラムを組んで実験してみました。
すべての問題で「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