pythonで素数判定

先日購入した英語配列のHHKbに慣れてきたなーと思ったら、ノートパソコンの日本語配列が打てなくなってました。このネタで一週間はイキり散らせるな。

やれと言われたのでしぶしぶ素数判定プログラム作りました。

# -*- coding: utf-8 -*-
"""
素数判定
"""
import math

def isPrime(num):
    if num < 2 :
        return False
    elif num == 2:
        return True
    elif num % 2 == 0: #あらかじめ偶数は除ける
        return False

    sqrtNum = math.sqrt(num)
    for i in range( 3, int(sqrtNum) + 1, 2):
        if num % i == 0:
            return False
    return True;


if __name__ == '__main__':
    MIN_NUM = 2
    MAX_NUM = 100
    for i in range(MIN_NUM, MAX_NUM + 1):
        if isPrime(i):
            print(i)

参考にしたソースはこちら(C#です)

isPrime()では素数の判定を行い、メイン関数で出力の最小最大値の定義とforでのループ及び出力をやってます。

平方根を出すのにmathとnumpy、どっちがいいのかわからなかったので比較していた参考サイト(Python平方根の計算をする。(math.sqrtとnumpy.sqrtを比較))

rangeでは整数しか扱えないのでsqrtNumはintにキャスト、<=にしたいので値も+1(+1しないとint(sqrtNum)が3の時にループされない ex.15→平方根3.87…)

また偶数は当然いらないので1つ飛ばしでループしてます。

おわり