« 333333331は素数か:1 | トップページ | ジンチョウゲが咲き始めていました »

2017年2月 3日 (金)

333333331は素数か:2

★まず、ど~んと結果を書いてしまいましょう。

31 素数です.
331 素数です.
3331 素数です.
33331 素数です.
333331 素数です.
3333331 素数です.
33333331 素数です.
333333331 17 19607843
3333333331 673 4952947
33333333331 307 108577633
333333333331 19 83 211371803
3333333333331 523 3049 2090353
33333333333331 607 1511 1997 18199
333333333333331 181 1841620626151

3が7つ並ぶところまでは素数です。8個並んだところで合成数になりました。
そして「19607843」は素数です。
3が13個並んだ 33333333333331では、素因数が4つあることがわかります。
素数判定だけではこうはなりませんから、やっぱね、素因数分解にして正解でしたね。
というわけで、この話は一応終わりました。

★ではプログラム。言語はやはり「(仮称)十進BASIC ver. 7.7.8」です。{1000桁モードで実行します。}
先頭で、「外部副プログラム」を宣言しています。(サブルーチンでもいいし、VBA的にはサブ・プロシージャでもいいです。)
こういう名前のプログラムがプログラム本体の外にあるよ、という宣言です。
で、宣言された「SoinsuBunkai」という部分は、プログラム本体の「END文」の下(=外部)に書いてあります。
これは前回の記事で作った、素因数分解プログラムの変数名をちょっと変更しただけで、基本的に同じものです。
もちろん、数を手入力で与えるのではなく、プログラム本体から与えるのですが。
で、プログラム本体が何をしているかというと。
31、331、3331・・・という数を生成して、素因数分解サブルーチンに渡して仕事をさせているわけです。
素因数分解プログラムを「部品」として使うというやり方です。
!***********************************
DECLARE EXTERNAL SUB SoinsuBunkai

LET m = 31
LET k = 30

FOR i = 1 TO 13
   PRINT m;
   CALL SoinsuBunkai(m)
   PRINT
   LET k = 10 * k
   LET m = m + k
NEXT i
END

!***********************************
EXTERNAL SUB SoinsuBunkai(n)
LET m = n
LET ans$ = ""

DO
   IF MOD(m, 2) = 0 THEN
      LET ans$ = ans$ & " 2"
      LET m = m / 2
   ELSE
      Exit Do
   END IF
LOOP

LET k = 3
DO WHILE(k <= SQR(m))
   IF MOD(m, k) = 0 THEN
      LET ans$ = ans$ & STR$(k) &" "
      LET m = m / k
   ELSE
      LET k = k + 2
   END IF
LOOP

IF (ans$ = "")THEN
   PRINT "素数です."
ELSE
   IF (m = 1)THEN
      PRINT ans$
   ELSE
      PRINT ans$ & STR$(m)
   END IF
END IF
END SUB
!***********************************

というわけで、こういうプログラムを書いて遊ぶのは楽しい。
ゲームなどを作る気は全くありませんが、数論の世界をプログラムで覗いてみる、というのは楽しい。理科教師としては物理の力学のシミュレーションとか、電場などの可視化とか、波動とか、そういうのがやりたくていろいろな言語に親しんだのでした。

« 333333331は素数か:1 | トップページ | ジンチョウゲが咲き始めていました »

理科おじさん」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 333333331は素数か:1 | トップページ | ジンチョウゲが咲き始めていました »

2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
サイト内検索
ココログ最強検索 by 暴想
無料ブログはココログ