for(i=2;i<=k;i++)if(m%i==0) break;if(i>=k+1)这里的if(i>=k+1)是在for循环之外。由于循环内只要m%i==0成立,就会跳出,那么if(i>=k+1)就不会成立。所以if(i>=k+1)如果成立,说明整个for循环过程中m%i==0都不成立,m是素数。
如果中途break了,i的值就达不到k+1。这只是用来判断每个i都被测试了一遍。不过这样写不如弄个flag标识。可读性差。