python
大橋 俊昭

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件

今回はここまで!!いかがでしょうか?次回はライブラリを活用したプログラミングに挑みますので、どうぞお楽しみに!!<つづく>

現役ウェブ解析士が教えるWebサイトの読み解き方 イメージ
システム開発サービスはこちら
ページTOPへ