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 到 25 的素数,包括 1,即使 1 不是素数。

我在这条线上遇到了麻烦: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

以下两行基本相同(就逻辑而言):

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

我阅读第一行以使其更清楚的方式是“如果没有余数i/j”,即i可以被j.

于 2009-10-28T23:58:39.273 回答