int m, n;
for(m=2; m<=50; m++)
{
for(n=2; n<m; n++)
{
if( m%n==0 ) //什么条件下跳出当前循环
break; //这里应该退出当前循环了
}
if(m == n) //n循环结束后,如果m=n的话就输出m
printf("%d ", m);
}
请问这样的原理是什么?我不太理解
意思就是当m为5的时候,n从2到4全部走一遍,m%n只要不为0,就代表m可以被其他数除,就不是素数
if()的定义 不等于0时候不执行if的内容 n就一直加 加到n<m 不成立停止 或者到符合if定义执行if(我是这么理解的)
楼上在说什么东西呀,乱七八糟的。素数就是除了1和其本身之外不能被其他数整除的数。第一个for循环是外循环,走到50.第二个for循环是内循环,如果整除了直接跳出循环(不是素数),如果没有的话一直到n==m循环条件不满足,内循环终止。再根据if(m == n)判断是不是走完了整个循环(素数),而不是中间跳出的。
然后m等于6时,n=2,此时6%2==0,跳出循环,但是m不==n(6不==2)所以没有被打印,然后下一个
哦我明白了,是不是m一直等于5,然后n依次等于2,3,4,始终不能使m%n==0,直到n等于5时,因为n不<m导致跳出循环了,此时m=5,n=5,就被打印了
是不是说5%2不等于0并不会退出循坏,而是把n++然后再循环直到有一次m不<0或者m==n时才跳出循环?
就比如说,m=5时,进入第一个循环:n=2,n<m(2<5)符合要求,进入下一层if m%n。m%n就是5%2不等于0,不符合要求,那这个循环就结束了,进入if(m==n),这时5不等于2不符合要求,5就没有被打印,那这个循环也结束了,回到最开始,5就没有被打印出来啊。为什么结果却有一个5