#include<stdio.h>
void p(int k)
{int m,i;
for(m=2;m<=k;m++)
{for(i=2;i<=m;i++)
if(!(m%i))break;
if(i==m)printf("%4d",m);
}
printf("\n");
}
main()
{p(13);}
为什么运行答案是2 3 5 7 11 13
if(!(m%i))break;//if(!(m%i))的意思是if(m%i==0)
这两个为什么会等价啊 前面不是有一个非么?不大理解
!()
非是取反
如果括号是是0的话反取是1就是真的
如果括号中是真的话,取反是假.
所以应该是括号中为0的时候真,对不对啊?
所以应该是m%i==0这样就好理解了啊
可是if(!(2%2))先算2%2=0 前面!变成一了就是if(1) 所以满足条件。所以break要运行。。不是么?
追答是的啊
退出后if(i==m)i=2,m=2所以2是素数啊