• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の質問です)

C言語の素数判定コードの解説

このQ&Aのポイント
  • is_primeという変数名の意味
  • is_prime = 1;の意味
  • コードの流れとreturn 0;までの意味

質問者が選んだベストアンサー

  • ベストアンサー
noname#119918
noname#119918
回答No.3

コメントで解説をくっつけました。 また、数箇所に少々手を加えてあります。 #include <stdio.h> int main(void) { int num, i, is_prime; /*便宜上、以下の定数を定義します。 C言語では0が偽、それ以外が真です。*/ const int TRUE = 1; const int FALSE = 0; printf("判定したい数を入力してください: "); scanf("%d", &num); /* 約数があるかどうか調べる */ /* ある数Mについて、その数を割り切れる数Nを探します。 MはM自身と1で割り切れるのは当然ですから、 調べるべきNの範囲は2 <= N <= M/2 です。*/ is_prime = TRUE; // 素数であると仮定します for(i=2; i<=num/2; i=i+1) { if((num%i)==0) // 条件分岐(1) { is_prime = FALSE; // 割り切れてしまったので素数ではない break; // これ以上のループは無意味なので、ループを抜けます } } // Mが素数ならば条件分岐(1)は成立しないので、is_primeはTRUEのままのはずです if(is_prime && num > 1) printf("素数です\n"); else if (num > 1) printf("素数ではありません\n"); return 0; }

Guchiken
質問者

お礼

丁寧な回答ありがとうございます! まだまだ改良の余地があるんですね!未熟でした… HKBさんのように早く人に教えられるようなプログラマになりたいです! また書き込みを見たら、教えてやってください。 回答ありがとうございました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

ある整数が素数かどうかを, あなたならどのように判定しますか? それを考えれば「なぜ for が i=2 とするか」もわかるはず....

Guchiken
質問者

お礼

回答ありがとうございます! 素数は1とその数自身でしか割れないから、 1より大きい2から始まるのですね?

回答No.1

Is this a prime? (これは素数ですか?) とか This is a prime. (これは素数です。) のisと考えれば分かりやすいと思います。 「はい」を1、「いいえ」を0で表すことが多いです。 課題の丸投げのようですのでこれ以上書きませんが、 上記の考え方で分かるんじゃないでしょうか。

Guchiken
質問者

お礼

さっそくの回答ありがとうございます! よく考えてから質問したのですが…。 ちょっと質問が多すぎたので謝ります。ごめんなさい! なぜ、for文の初期値をi=2にするのかよくわからなかったもので…。

関連するQ&A