
汝は素数なりや?
こんにちは。
さしす文庫の陸離なぎです。
今回はある動画を見ていてふと、
「入力した数字が素数かnot素数か判定するプログラムを作りたいな」
と思ったので、作ってみました。
まず、作ったものがこちらです。

まず考えたのは、素数かどうかを判定するには、どうすればいいかということです。そして、素数とはなにかと考えました。
そして私は素数をこう定義付けました。
「素数は1からその数までで割ったときに余りが0になる回数が2回の数字」
なのでこういうアルゴリズム(コンピュータへの指令)を考えました。
・任意の数を1から順番に割っていって「余り0」が何回出てくるかをカウントする。
・0が2回までなら最後まで行き、「素数」と判定。
・3回出てきた時点でループを抜けて「素数じゃない」と判定。
ここからはプログラムの説明です
p = int(input("数値を入力してください: "))
ユーザーに数字を入力してもらうプログラムです。
ここはどう書いたらいいか分からなくて調べました。分からなかったら調べる。がすべての学びの基本です。
a=0
b=0
c=0
あとで使うのでいったん0を定義付けてます。
for i in range(p):
入力された数(p回)繰り返すというプログラムです。
a=a+1
aに1を足し、
b=p%a
p÷aのあまりをbに代入しています。
if b == 0:
c=c+1
if c == 3:
break
もし余り(b)が0のとき、cに1を足し、
もし、cが3になったら、このループを終わるというプログラムです。
if c == 2:
print(p,"は素数です")
else:
print(p,"は素数ではありません")
もしcが2なら「(p)は素数です」と出力し、そうでないなら「(p)は素数ではありません」と出力するプログラムです。
実行すると、


こうなります。
はい。
17は素数ですね。
これで私もプログラマーです。
感想
プログラミングって結構ハードルが高いイメージがあると思うんですけど、実際、始めるまではハードルが高いです。でも、調べれば出てくることばかりなので、ちゃんと舗装された階段があって、良い時代だと思いました。
コーディング(プログラムを書くこと)も大事ですけど、アルゴリズム(コンピュータにどんな命令を与えるか)の方が大事だとも感じました。
今後の課題
「プログラムをアプリにする」
これにつきますね。
アンドロイドで動くアプリにして、アプリ開発者になりたいです。
【宣伝】
アンドロイドと言えば、2月9日(日)、文学フリマ広島7という同人誌即売会にさしす文庫が出店するのですが、そこで『抽選で高性能アンドロイドが当たったアンソロジー』という小説アンソロジーを販売予定です。
※こっちのアンドロイドはスマホの話ではないです。
無料で入場できるので、お近くにご住まいの方やその頃に広島にご用事のある方は是非、お立ち寄りください。