因为if(i<n)代码块必须在for循环结束后才能执行。你加了括号等于是for每次循环都会执行一遍,当然不对了。如果想循环次数更少一些,可改成if(i<2;i * i<=n;i++)然后if(i<n)改为 if(i*i>n)
你括号括错地方了,怎么把printf也一起括进来了,printf应该在for循环结束之后执行啊,否则for循环每执行一次都print一个东西出来,不乱套了