最近、洗濯物を取り込み忘れて悲惨な目にあいました。
季節のお洒落カラー満載!ピクトデザインコレクション
思います。
初学者にとっては難しく感じる人もいるかもしれません。
そんな方向けに今回は、「素数判定」をシンプルなコード(main関数の中身)で解説していきたいと思います。
問:
100以下の素数をすべて表示せよ。
まずは発想です。
発想: 素数は1と自分自身の数でしか割り切れない。
なので、 ある整数 i は2 ~ i-1 で割り切れないとき、整数 i は素数である。
この発想を基にプログラミングを書いていくと、解答は以下のようになります。
int flag=0;//
for(int i=2;i<=100;i++)
{
for(int j=2;j<i;j++)//多重ループを用いて i を固定して考えます
{
if(i%j ==0)//i を 2 ~ i-1 で割って、もし割り切れる数がある時はflag=1とする
{
flag=1;
}
}
if(flag == 0)//flagが1でないとき i は素数となる
{
System.out.println(i);//素数を表示
}
flag=0;//flagをリセット
}
この度 プログラミングのアルゴリズムが質問できる、
「 プログラミングアルゴリズム質問サイト」 を作成しました! コピペしてアクセスしてください。
algorithmworldpro.com
正解だけのせるのもあれなので、私が過去に失敗した例を載せていきたいと思います。
3年間で1万人が学んだプログラミングスクールTECH::CAMPのオンライン説明会
失敗例1
for(int i=2;i<=100;i++)
{
for(int j=2;j
どこが失敗なのかご理解いただけるでしょうか。前半部分は合って入るのですが、
まずはif(i%j !=0)に注目してみましょう。
仮にi=6だったとします。そうするとjでのループは2,3,4,5で割ろうとします。
ここでj=5のときiがif文の条件を満たしてしまうため、
System.out.println(i);
が起動してしまいます。
更に厄介なことに、j 「flagを使おう!」という発想は、この繰り返しの表示を防ごうという発想から来ています。
ではif(i%j !=0)の部分を修正しflagを追加して、繰り返しの表示を解決しましょう!注意しなくてはならないのは、flag=0;を
記述することです。これがなければ、素数以外の数も表示されてしまいます。
int flag=0
for(int i=2;i<=100;i++)
{
for(int j=2;j
となりプログラムが完成します。
今回はここまでとします。読んでいただきありがとうございました。
このブログでは「プログラミング」をはじめ様々な分野の記事がありますので
是非そちらもよろしくお願いします。
また、次回お会いしましょう。
この度 プログラミングのアルゴリズムが質問できる、
「 プログラミングアルゴリズム質問サイト」 を作成しました! コピペしてアクセスしてください。
algorithmworldpro.com
【このカテゴリーの最新記事】
- no image
- no image