『これも未解決問題? Part2』解答


◆広島県 清川 育男 さんからの解答。

十進ベーシックでプログラムを組んで実験してみました。
すべての問題で「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


 『これも未解決問題? Part2』へ

 数学の部屋へもどる