4
int main()
{
 int i,j;

 for (i=1; i<=25; i++)
 {
  for (j=2; j<= i/2; j++)
   if (!(i%j)) break;
  if (j>i/2) cout << i << "\n";
 }
 return 0;
}

このプログラム (私が作成したものではありません) は、1 は素数ではありませんが、1 を含む 1 から 25 までの素数を出力します。

この行に問題があります:if (!(i%j)) break;

これは「i と j = 0 のモジュラスではない」と言っていますか?

4

2 に答える 2

16

!(i%j)(i%j)==0、または「i は j で割り切れる」と同じ

于 2009-10-28T23:58:21.560 に答える
3

次の 2 つの行は、(ロジックに関する限り) 基本的に同一です。

if (!(i%j))
if ((i % j) == 0)

より明確にするために最初の行を読む方法は、「から余りがない場合i/j」、つまり、iで割り切れる場合jです。

于 2009-10-28T23:58:39.273 に答える