6.モジュールシートを開くエクセル95では、挿入・シート・モジュールシートで、白紙のシートが開きます。ここに、functionから書き始めます。エクセル97以降は、モジュールシートを開く手順が面倒になりました。Basicにチェックを入れると、下のような、ツールバーが現れます。編集ボタンをクリックします。このような、VisualBasicの編集画面が現れます。挿入メニューを開き、標準モジュールをクリックします。最近のWindowsでは、昔のBasicのようなプログラムが作れませんが、エクセルのマクロを使うと、Basic風のプログラムが楽しめます。VBAの勉強の参考にしてください。素数かどうかの判定1と自分自身以外に約数が無ければ素数です。偶数の素数は2以外に無く、素数はすべて奇数です。そこで、3・5・7・・・と、片っ端から奇数で割っていき、割り切れる数が無いか調べます。その数自身まで調べる必要は無く、その数の平方根に近い奇数まで調べれば十分です。nがm1で割り切れれば、n=m1×m2となるはずで、m1がnの平方根により大きな奇数であれば、m2はそれよりも小さい奇数のはずで、すでにチェックしているはずです。nの平方根に近い内輪の奇数をn0とし、nを3・5・7・9・・・n0と割り算していって、割り切れるものが無ければ、その数は素数です。Sosu(N)は、N以上の最も近い素数を返すようにします。Sosu(10)=11で、Sosu(11)=11というようにこの関数は、n以上の素数を返すようにします。すると、nがどんな数であっても、必ず整数を返します。割り切れるかどうかは、Mod関数を使って調べます。nをn0で割った余りを返します。basicの関数ですがVBAでもそのまま使えます。INT(n)で求めることにします。INT(N/n0)が等しいかどうかで、Nがn0で割り切れるかどうか判定できます。実際には、この形式で作ってあります。使うと、繰り返しが作れます。Tilは条件が成立するまで、繰り返されます。3・5・7・・と2ずつ増やして行き、割る数が平方根を超えるまでチェックしますが、途中で約数が見つかったら、次の奇数を調べます。ここでは、2重のLOOPを使っています。最初の2行は、引数が偶数の場合は1を加えて、調べるスタートの数Nsを奇数にするものです。正確には、NやNs・n0(Nの平方根に近い整数)は整数として定義しなければなりませんが、特に定義しなくても動きます。Integer)モジュールシートを開く実際に関数を書き込むのは、ワークシートでなくモジュールシートです。VisualBasicのツールバーを表示させEditorのボタンをクリックします。ここの挿入メニューで、標準モジュールを挿入します。これで開いた窓に書き込みます。入れれば、11と出るはずです。自動的に、200個の素数を計算するように関数を入れたものが下の例です。ダウンロードできます。