サイトアイコン Neeetbブログ

【素振り感覚で】素数を算出するプログラムを作ってみた

執筆日:2020年6月29日

公開日:2020年6月30日


素数 計算 プログラム コード Python

フリー素材

本業が行き詰まり、気晴らしで・・・

気晴らしのつもりで、素数をリストアップするプログラムを作りました。

見出しに書いた「本業」とは、Twitterでイイネを付けるソフトのことです。

数値が素数であるか確認する方法

ある数値に対して、それが素数かどうか判定する方法を簡単に説明します。

まずは判定対象の数値を、それ以外の素数で割り算します。

この結果、全ての割り算で割り切れなければ、その数値は素数であると判定できます。

Pythonのコードをページ最下部に載せました。

もし興味あるかたは、ご覧下さい。

適度なルーティーンがモチベを回復するかも

今回の行動は「本業を先延ばし」にして遊んでいたことになります。

ただ、適度に仕事を寝かせることで、モチベーションが回復することもあると思います。

時には良いアイデアを得られることも。

名著「ORIGINALS」で近い話を発見

アダム・グラントさんの書籍「ORIGINALS」でも、以下のように記述されております。

先延ばしは「生産性の敵」かもしれないが、「創造性の源」にはなる。

引用元:アダム・グラント「ORIGINALS」ISBN978-4-8379-5768-3

実際に実験をやっていたようです。

課題学生に与え、ランダムに選んだ何人かには途中で「ソリティア」や「マインスイーパ」をやらせてみたそうです。

その結果、提出物の創造性が28%高く評価されたそうです。

興味ある方は本を読んでみて下さい。リンクを最下部に載せておきます。

記事の信頼性


コード

#prime_number.py
#「time」「datetime」パッケージは、計算結果の
#テキストファイル名を付与するためだけに使用
import time
import datetime

MAX_CALC = 500000

prime_number = []
prime_number.append(2)

def calc_prime(arg_target,arg_prime_number):
    prime_number_for_calc = []
    for value_1 in arg_prime_number:
        buf = value_1^2 < arg_target
        if buf:
            prime_number_for_calc.append(value_1)

    IsPrime = True
    if prime_number_for_calc != []:
        for value_2 in prime_number_for_calc:
            if IsPrime:
                buf_IsPrime = (arg_target % value_2 > 0)
                IsPrime = IsPrime and buf_IsPrime

    return IsPrime

for target_value in range(2,MAX_CALC):
    if calc_prime(target_value,prime_number):
        prime_number.append(target_value)
    #計算の進捗度をユーザーへ表示する
    print(str(target_value / MAX_CALC * 100)+'%')

#計算結果をテキストファイルに出力する
now=time.ctime()
cnvtime = time.strptime(now)
filename = time.strftime("%Y%m%d_%H%M%S", cnvtime)
path_w = './/'+filename+'.txt'
prime_number_fortext = list(map(str, prime_number))
with open(path_w, mode='w') as f:
    f.write('\n'.join(prime_number_fortext))
        

書籍「ORIGINALS」へのリンク

モバイルバージョンを終了