いわゆるコラッツの問題

 投稿者:山中和義  投稿日:2014年 3月28日(金)13時11分58秒
  2以上の自然数nに対して、
 その数が素数なら、10倍して1を足す。 合成数なら、最小の素因数で割る。
という操作を行い新しい自然数を作る。
このとき、任意の自然数から始めて、この操作を繰り返し行うと、
最終的には必ず43になる。

考察
合成数は、素数になる。

43以下の素数
  5 → 17 → 19 → 13 → ┐
                         ↓
              3 → 31 → ┐
                         ↓
                   41 → 23 → 11 → ┐
                                     ↓
                     2 → 7 → 29 → 37 → 43 → 43

43より大きい素数は、自分より小さい素数になる。
(終り)


OPTION ARITHMETIC RATIONAL !多桁の整数

FOR i=2 TO 1000
   IF prmdiv(i)=i THEN !素数なら

      LET N=i

      LET C=0 !回数
      DO
         LET C=C+1
         LET T=prmdiv(N)
         IF T=N THEN !素数
            PRINT " ";STR$(N);
            LET N=10*N+1
         ELSE
            PRINT " *";STR$(N);
            LET N=N/T
         END IF
      LOOP UNTIL prmdiv(N)=N AND (N<=43 OR N<i)
      PRINT N
      !PRINT C

   END IF
NEXT i
END


!UBASIC.LIB 抜粋

EXTERNAL FUNCTION prmdiv(n) !1より大きな最小の約数
OPTION ARITHMETIC RATIONAL !多桁の整数
IF n<>INT(n) THEN !整数以外なら
   PRINT "prmdiv関数でパラメータが不適当です。"
   STOP
ELSEIF n=0 THEN
   LET prmdiv=0
ELSE
   LET n=ABS(n) !絶対値をとる

   IF MOD(n,2)=0 THEN !2の倍数
      LET prmdiv=2
   ELSEIF MOD(n,3)=0 THEN !3の倍数
      LET prmdiv=3
   ELSE
      FOR i=5 TO INTSQR(n) STEP 6
         IF MOD(n,i)=0 THEN !5,11,17,23,29,…
            LET prmdiv=i
            EXIT FUNCTION
         ELSEIF MOD(n,i+2)=0 THEN !7,13,19,25,31,…
            LET prmdiv=i+2
            EXIT FUNCTION
         END IF !+1,+3,+5は2の倍数(偶数)、+1,+4は3の倍数、+5は5の倍数
      NEXT i
      LET prmdiv=n !その数自身
   END IF
END IF
END FUNCTION


実行結果

2 *21 7
3 31
5 *51 17
7 71 *711 *237 79 *791 113 *1131 *377 29
11 *111 37
13 131 *1311 *437 23
17 *171 *57 19
19 191 *1911 *637 *91 13
23 *231 *77 11
29 *291 97 971 *9711 *3237 *1079 83 *831 277 *2771 163 *1631 233 *2331 *777 *259 37
31 311 *3111 *1037 61 *611 47 *471 157 1571 *15711 5237 *52371 *17457 *5819 *529 23
37 *371 53 *531 *177 59 *591 197 *1971 *657 *219 73 *731 43
41 *411 137 *1371 457 *4571 653 *6531 *2177 311 *3111 *1037 61 *611 47 *471 157 1571 *15711 5237 *52371 *17457 *5819 *529 23
43 431 *4311 *1437 479 *4791 1597 15971 *159711 *53237 383 *3831 1277 *12771 *4257 *1419 *473 43
47 *471 157 1571 *15711 5237 *52371 *17457 *5819 *529 23
53 *531 *177 59 *591 197 *1971 *657 *219 73 *731 43
59 *591 197 *1971 *657 *219 73 *731 43
61 *611 47
67 *671 61
71 *711 *237 79 *791 113 *1131 *377 29
73 *731 43
79 *791 113 *1131 *377 29
83 *831 277 *2771 163 *1631 233 *2331 *777 *259 37
89 *891 *297 *99 *33 11
97 971 *9711 *3237 *1079 83

   :
   :

 

戻る