プログラミングを学ぼうと思った時、「条件分岐」と「繰り返し」について学ぶのは基本中の基本です。そこで、素数判定を行うプログラムを作って、プログラミングの基礎を学びましょう。日本語プログラミング言語「なでしこ」で楽しく基本をマスターしましょう。
なでしこで「繰り返し」と「条件分岐」はどう書く?
「条件分岐」と「繰り返し」は、プログラミングにおける最も重要な概念です。なでしこでは、このために「もし」構文と「繰り返す」構文を使います。
今回目的とする「素数判定」のプログラムを作る前に、まずは「もし」構文と「繰り返す」構文の使い方を確認しておきましょう。
「もし」構文の使い方
まずは、条件分岐から見ていきましょう。なでしこで処理の分岐を行うには「もし」構文を使います。次のように書きます。
# 【書式】「もし」構文
もし、(条件式)ならば
# ここに条件が真のときの処理
違えば
# ここに条件が偽のときの処理
ここまで
図にすると次のようになるでしょう。条件式を確認して、条件が真(つまり正しい)ときには、真のときの処理のブロックを実行し、条件が偽(つまり正しくない)ときには偽のときの処理のブロックを実行します。なお、「もし」構文の「違えば」以降の部分は省略することもできます。
例えば、変数Nが3より大きいかどうかを調べるプログラムでは次のように書きます。実際に、なでしこ簡易エディタを開いて、以下のプログラムを入力してみてください。
変数Nに5を代入。
もし、変数N > 3ならば
「変数Nは5より大きい」と表示。
違えば
「変数Nは5以下」と表示。
ここまで。
画面下の「実行」ボタンを押すとプログラムがすぐに実行されます。変数Nは5なので、3より大きいので「変数Nは5より大きい」と表示されます。
次に、上記のプログラムの1行目を「変数Nに1を代入」と書き換えて実行してみましょう。すると、「変数Nは5以下」と表示されます。このようにプログラムの学習では、プログラムを書き換えてみて、どうのように表示結果が変わるかを確かめていくと、理解が深まります。
「繰り返す」構文の使い方
次に「繰り返す」構文の使い方を確認してみましょう。なでしこで繰り返しを行うには、次のように書きます。
# 【書式】「繰り返す」構文
Nを1から10まで繰り返す
# ここに繰り返す処理
ここまで。
図で動作を確認してみましょう。以下は変数Nを指定して、1から10まで繰り返す処理を示したものです。変数Nの値を1,2,3,4,5…10と変更しながら繰り返し10回、繰り返し処理のブロックを実行します。
例えば、次のプログラムを実行して結果を確認してみましょう。
変数Nを1から5まで繰り返す
「変数N = {変数N}」を表示。
ここまで。
同じように、なでしこ簡易エディタで上記のプログラムを実行してみましょう。すると、1から5までの間繰り返し実行しているのを確認できます。なお、「…{変数N}…」のように書くと、文字列の中に変数Nの値を埋め込んで表示することができます。
1から10までの中で偶数だけを表示
素数判定の前に簡単な練習問題を解いてみましょう。1から10までの中で偶数だけを画面に表示するプログラムを作ってみましょう。次のようなプログラムになります。
Nを1から10まで繰り返す
もし、(N % 2) = 0ならば
「{N}は偶数」と表示
ここまで
ここまで。
プログラムを実行すると、次のように表示されます。
プログラムを確認してみましょう。ポイントとなるのは、偶数判定を行っている2行目の部分です。
「N % M」のように書くと、NをMで割った時の余りを求めることができます。例えば、Nが4でMが2であれば、割り切れるので余りは0になりますし、Nが4でMが1であれば割り切れず余りは1になります。
それで、偶数というのは、2で割って余りが0になるものなので、上記のようなプログラムを作ることで偶数だけを画面に出力できるというわけです。
素数判定のプログラムを作ってみよう
それでは、いよいよ「素数判定」を行うプログラムを作ってみましょう。そもそも、素数とはどんな数でしょうか。素数とは次のような性質を持つ数のことです。
素数とは1より大きい自然数のうち、1とその数でしか割り切れないもの。
つまり、素数判定のプログラムを作るには、次のような処理を記述します。判定したい数をNとするとき、次のようにします。
- (1) 変数Mについて、2から(N-1)まで手順(2)と(3)の処理を繰り返す
- (2) NがMで割り切れるか判定
- (3) 割り切れるなら、素数でないことが分かる
- (4) 上記いずれの数でも割り切れなければ、素数であることが分かる
# 判定したい数を以下に指定 --- (*1)
N = 13
# 素数判定を行うプログラム --- (*2)
結果=「素数である」
Mを2から(N - 1)まで繰り返す
もし、(N % M) = 0ならば # --- (*3)
結果=「素数ではない」
抜ける。
ここまで。
ここまで。
「{N}は{結果}」を表示。# --- (*4)
なでしこ簡易エディタで確かめてみてましょう。上記のプログラムを貼り付けて「実行」ボタンを押してみましょう。結果が表示されます。