ショッピングモール  Automotive / Motorcycles ( Repair & Performance )  Automotive ( Parts )


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.5372

素数を求めるコードについて
投稿者---初心者A(2006/02/03 18:32:35)


 環境 osはウィンドウズxpでコンパイラはCygwinを使っています。

 現在数字を入力してそれを素数か否を判断するコードを記述しているの
ですがいまいち分からない(理解しがたい)点があり投稿させていただきました。
  以下ソースです。

#include <stdio.h>

int main(void)
{
   int num,i;

   printf("2以上の整数を入力してください。\n");
   scanf("%d", &num);

   for(i=2; i<=num; i++){
      if(i == num){
        printf("%dは素数です。\n",num);
      }
      else if((num % i) == 0){
        printf("%dは素数ではありません。\n",num);
           break;
      }
   }     
   return 0;
}


 ↑のソースのifで素数を判断する if(i == num) ←の部分がいまいち
理解できないのですが。何故この式で素数が判断されるのかが分かりませ
ん。どなたか詳しくごきょうじゅねがえませんでしょうか。宜しくお願い
します。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:素数を求めるコードについて 5373 Hermit 2006/02/03 18:47:04


No.5373

Re:素数を求めるコードについて
投稿者---Hermit(2006/02/03 18:47:04)



if(i == num){
printf("%dは素数です。\n",num);
}

これの後にある

else if((num % i) == 0){
printf("%dは素数ではありません。\n",num);
break;
}

で、割り切れれば素数ではない事がわかると思います。
i が、num 未満までの間の数で割り切れなかった場合、
割り切れる数がないので、素数だということがわかります。

だから、i が、num に到達した時点で、素数と判断します。

(sqrt(num) まででもいいんですが、計算させるほどのことでもないと判断したのでしょう)


この投稿にコメントする

削除パスワード

No.5376

Re:素数を求めるコードについて
投稿者---初心者A(2006/02/03 23:26:15)


 なるほど要約分ったような気がします。ありがとうございます。
 話が重複するようですがつまり、numが割り切れるか割り切れないかの判断を2〜num-1までの数を使いifとelseifでかふるいにかけている。ということですかね。
 私はてっきり if(i == num){ の部分だけで素数を判断しているのかと思いこんでいたので、要約意図が理解できました。本当にありがとうございました。




この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity