素数とプログラム(3)
前回、100までの素数をPythonというプログラム言語でその定義から求めた。今度はC言語でのプログラムを学ぼう。
以下にそのプログラムを書く
/*
C 言語で 100 までの素数を書き出すプログラム
エラトステネスの篩ではなく、1 個 1 個確認していく方法
*/
#include <stdio.h>
int main()
{
int i, j;
for( i=2;i<=100;i++ ) {
for(j=2;j<=i;j++){
if( i%j==0 ) {
break;
}
}
if( i==j )
printf("%3d\n", i);
}
return 0;
}
下の部分
/*
エラトステネスの篩ではなく、1個1個確認していく方法
*/
プログラムと関係ない、説明部分。
/* と */に囲まれた部分は、プログラムではなく、ヒト(自分や他人)が見て、参考にする説明の部分(コメント)。 // も使える。//の場合は続く1行はすべてコメント。
#include <stdio.h>
#include <stdio.h>はC言語の標準ライブラリィを使いなさいよ(使わせて)ということらしい。
#は何でついているのだろう? それは、プログラムの前処理=プリプロセスをしますよ、という意味。#の作業の例に#defineなどがある。
int main()
{
プログラム
}
この部分がC言語プログラミングのメインで、main関数。{ から }までを実行しなさいということ。
{と}の間は次の記載。
int i, j;
for( i=2;i<=100;i++ ) {
for(j=2;j<=i;j++){
if( i%j==0 ) {
break;
}
}
if( i==j )
printf("%3d\n", i);
}
return 0;
}
またここを一行ずつ考える
int i, j; はiとjは、インテジャInteger、「整数です」ということ。ほんとは「整数型」らしい。
forは「今から繰り返しの計算をするよ」ということ(forは英語を和訳すれば・・のために、・・・に向かってですが・・・)。
i=2;i<=100;i++
iは2から初めて一つずつ加えて計算に使いなさい(100まで)。(i=i+1と同じ。i=i+1;が、i += 1 ;さらにi++ ; となった)
{ {のなかに{内側から { }を考えると良い。
for(j=2;j<=i;j++)
これも同じでjは2から初めて一つずつ加えて計算に使いなさい。
if( i%j==0 ) {
break;
%は割った余り(+,-,*,/の四則の他、**の累乗や%の割り算のあまりなどがある)。i%jはi÷jの余り。
if( i%j==0 )は、もしiがjに割り切れたら(==は右と左を比べる:比較演算子、=は変数に代入)ということ。そして割り切れたら「break;」つまり計算をやめる。
if( i==j )
printf("%3d ", i);
もしとうとう割れる数を見つけることが出来なかったら、((iは素数だから)⇦コンピュータはそうは考えないが)プリント(C言語の場合「printf」と命令する)しなさい。
ということ。合っているかな??やっとここまでできた。