執筆日: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))