(!(i%j))是否表示不是i的模数而j = 0?

时间:2009-10-28 23:57:11

标签: c++ modulo

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?

2 个答案:

答案 0 :(得分:16)

!(i%j)(i%j)==0相同,或“我可以被j整除”

答案 1 :(得分:3)

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

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

我读第一行以使其更清晰的方式是“如果没有来自i/j的余数”,即i可被j整除。