2 xyhqqlove xyhqqlove 于 2016.01.23 18:49 提问

这个程序错在哪里?为什么把所有的数字都输出出来了?
 int main()
{
int i,j;
for(i=2;i<100;i++)
{
for(j=2;j<i;j++)
{
if (!i%j)break;
}
if (j==i||i==2)printf("%d\n",i);
}
}

3个回答

caozhy
caozhy   Ds   Rxr 2016.01.23 18:53
已采纳

if (!i%j)break;
->
if (!(i%j))break;
否则优先级错了。

oyljerry
oyljerry   Ds   Rxr 2016.01.23 18:56

因为每一个数都能被自己整除,所以,i 从2开始就会都会有输出,直到自己才break,然后后面条件j会等于i。然后就是输出

xyhqqlove
xyhqqlove 不是这个问题
接近 2 年之前 回复
91program
91program   Ds   Rxr 2016.01.23 18:57

if (j==i||i==2)printf("%d\n",i); 是否应该是在第二个 for 循环内,而不是第一个 for 循环内。

xyhqqlove
xyhqqlove 不是这个问题
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!