2020.10.14 システム
人気沸騰のプログラミング言語「Python」に触れよう!!(プログラミング編)
こんにちは、マリンロードの大橋です。
前回に引き続きプログラミング言語「Python」に触れていきます。実際にプログラムを作ってみることで理解を深めていきましょう!!「どれだけ速く」なるかな!?でもネタにしましたが、「1,000,000以下の素数」を「Python」を使ってカウントしていくことにします。
素数についての復習
学生時代に「エラトステネスの篩(ふるい)」という方法で「100以下の素数」を導き出した経験があると思います。正式には「素数とは正の約数が1と自分自身のみである自然数」ということですが、簡単に言えば「2、3、5、7、9、、、」とかいう「自分自身以外では割り切れない数」と考えて良いでしょう!!
素数を導き出すにあたり、以下のような事前知識をインプットしておく必要もあります。難しく考えず、シンプルに考えてみてください。
(その1)1桁の素数(2、3、5、7)は導き出す必要もありません。
(その2)自分自身の半分以下の数でしか割り切ることはできません。
(その3)割り切れるかどうかは素数のみでチェックすれば良いです。
実際にプログラムを作ってみよう!!
「どれだけ速く」なるかな!?で作った「Java版」のプログラムを「Python版」に置き換えてみましたが、こんなプログラムになりました。どうでしょうか!?プログラム構造は同じですが、細かく観ていくと「Python」ならではの記述方法が目に付くと思います。
# 初期処理 import time import math stTime = 0 # 開始ポイント edTime = 0 # 終了ポイント primeCk = True # 判定 primeNo = [] # 結果(素数一覧) # 開始ポイント設定 stTime = time.time() # 処理実行(1,000,000以下の素数を取得) targetNo = 2 while targetNo <= 1000000: # 自分自身以外で割り切れる場合、素数ではない primeCk = True if targetNo != 2 and targetNo != 3 and targetNo != 5 and targetNo != 7: i = 0 while primeNo[i] < int(math.sqrt(targetNo)) + 1: if targetNo % primeNo[i] == 0: primeCk = False break i += 1 # 結果(素数一覧)へ保存 if primeCk: primeNo.append(targetNo) targetNo += 1 # 終了ポイント設定 edTime = time.time() # 結果表示 print("処理時間:" + str(edTime - stTime) + "秒") print("結果(取得数):" + str(len(primeNo)) + "件")
文末を示す;(セミコロン)にような記号は存在しません。ブール値は「True」「False」にように先頭大文字で記述します。繰り返し構文(while文)の有効範囲が見付かりませんが、インデント(字下げ)された部分が範囲になります。条件分岐(if文)も同様、インデント(字下げ)された部分が条件に応じた処理になります。
プログラムを簡潔に書くことができる、これが「Python」です。慣れが必要ですね。。。
動かしてみよう!!
まずは、作ったプログラムを保存しなければなりません。前回のセットアップ編で「Python」をインストールした場所に保存することにします。ファイル名は「sample.py」としましょう。
続いて、コマンドプロンプトを起動し、実行モジュールへパスを通します。カレントフォルダも移動しておきます。
set PY_HOME=C:python set PY_SCRIPT=%PY_HOME%Scripts set PATH=%PY_HOME%;%PY_SCRIPT%;%PATH% cd /D C:python
「python sample.py」と入力することでプログラムが実行されます。
C:python>python sample.py 処理時間:5.71817946434021秒 結果(取得数):78498件
今回はここまで!!いかがでしょうか?次回はライブラリを活用したプログラミングに挑みますので、どうぞお楽しみに!!<つづく>